Всем привет. У меня есть пару селектов. в результате выбора значений каждого селекта составляется строка такого типа:
var string = Имя выбранного селекта = значение (option value)&Имя выбранного селекта = значение (option value)&.....
и так до конца. мне надо чтобы при смене значения селекта который я уже выбирал ранее значение в этой строке находилось и менялось, а у меня при выборе оно вставляется в конец строки, и получется что 1 и тот же параметр может вывестись 2 раза.
Как можно создать регулярное выражение которое ищет и заменяет нужное значение?
Код проверки:
var allparams = "";
var selname = "";
var selval = "";
if($("#reg option:selected").val() != ""){
selname = $('#reg').attr('name');
selval = $("#reg option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#mode option:selected").val() != ""){
selname = $('#mode').attr('name');
selval = $("#mode option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#redir option:selected").val() != ""){
selname = $('#redir').attr('name');
selval = $("#redir option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#tic option:selected").val() != ""){
selname = $('#tic').attr('name');
selval = $("#tic option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#yaca option:selected").val() != ""){
selname = $('#yaca').attr('name');
selval = $("#yaca option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#trust option:selected").val() != ""){
selname = $('#trust').attr('name');
selval = $("#trust option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#vozr-mes option:selected").val() != ""){
selname = $('#vozr-mes').attr('name');
selval = $("#vozr-mes option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#pub option:selected").val() != ""){
selname = $('#pub').attr('name');
selval = $("#pub option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#indeks-pub option:selected").val() != ""){
selname = $('#indeks-pub').attr('name');
selval = $("#indeks-pub option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#pub_len0 option:selected").val() != ""){
selname = $('#pub_len0').attr('name');
selval = $("#pub_len0 option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#pub_month option:selected").val() != ""){
selname = $('#pub_month').attr('name');
selval = $("#pub_month option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#pub_a option:selected").val() != ""){
selname = $('#pub_a').attr('name');
selval = $("#pub_a option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#spama option:selected").val() != ""){
selname = $('#spama').attr('name');
selval = $("#spama option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#v-arhive option:selected").val() != ""){
selname = $('#v-arhive').attr('name');
selval = $("#v-arhive option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#spama option:selected").val() != ""){
selname = $('#spama').attr('name');
selval = $("#spama option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#mozhno-v-arhiv option:selected").val() != ""){
selname = $('#mozhno-v-arhiv').attr('name');
selval = $("#mozhno-v-arhiv option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#dobavit option:selected").val() != ""){
selname = $('#dobavit').attr('name');
selval = $("#dobavit option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#ggl option:selected").val() != ""){
selname = $('#ggl').attr('name');
selval = $("#ggl option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#rota option:selected").val() != ""){
selname = $('#rota').attr('name');
selval = $("#rota option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#mira option:selected").val() != ""){
selname = $('#mira').attr('name');
selval = $("#mira option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#weba option:selected").val() != ""){
selname = $('#weba').attr('name');
selval = $("#weba option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#sum option:selected").val() != ""){
selname = $('#sum').attr('name');
selval = $("#sum option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#seven option:selected").val() != ""){
selname = $('#seven').attr('name');
selval = $("#seven option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#v-sape option:selected").val() != ""){
selname = $('#v-sape').attr('name');
selval = $("#v-sape option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#status option:selected").val() != ""){
selname = $('#status').attr('name');
selval = $("#status option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#kod-otv option:selected").val() != ""){
selname = $('#kod-otv').attr('name');
selval = $("#kod-otv option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#inggl option:selected").val() != ""){
selname = $('#inggl').attr('name');
selval = $("#inggl option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#reyting option:selected").val() != ""){
selname = $('#reyting').attr('name');
selval = $("#reyting option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#monetizaciyarub option:selected").val() != ""){
selname = $('#monetizaciyarub').attr('name');
selval = $("#monetizaciyarub option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#monetizacii option:selected").val() != ""){
selname = $('#monetizacii').attr('name');
selval = $("#monetizacii option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#roi option:selected").val() != ""){
selname = $('#roi').attr('name');
selval = $("#roi option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#rashody-rub-v-god option:selected").val() != ""){
selname = $('#rashody-rub-v-god').attr('name');
selval = $("#rashody-rub-v-god option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#esche-podkl option:selected").val() != ""){
selname = $('#esche-podkl').attr('name');
selval = $("#esche-podkl option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#mozhno-kleit option:selected").val() != ""){
selname = $('#mozhno-kleit').attr('name');
selval = $("#mozhno-kleit option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#subj option:selected").val() != ""){
selname = $('#subj').attr('name');
selval = $("#subj option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#alexa option:selected").val() != ""){
selname = $('#alexa').attr('name');
selval = $("#alexa option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#trafik-iz-ps option:selected").val() != ""){
selname = $('#trafik-iz-ps').attr('name');
selval = $("#trafik-iz-ps option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#dvizhok option:selected").val() != ""){
selname = $('#dvizhok').attr('name');
selval = $("#dvizhok option:selected").val();
allparams += selname + "=" + selval + "&";
}
if($("#dney option:selected").val() != ""){
selname = $('#dney').attr('name');
selval = $("#dney option:selected").val();
allparams += selname + "=" + selval + "&";
}
var params = "";
var selectname = "";
var selectval = "";
$("select").on("change",function(){
selectname += $(this).attr('name');
selectval += $(this).val();
if(allparams !== ""){
if(params !== ""){
params+="&" + selectname + "=" + selectval;
}
else{
if(allparams.indexOf($(this).attr('name')) == - 1){
params+=allparams + selectname + "=" + selectval;
}
else{
params+= allparams + selectname + "=" + selectval;
console.log('b');
}
}
}
else{
if(params !== ""){
params+= "&" + selectname + "=" + selectval;
}
else{
params+= selectname + "=" + selectval;
}
}
console.log(params);
//indow.location = "http://nature-photographing.com/video/test/select.php?" + params;
});
function setOpt(a,b){
}
Предлагаю все селекторы хранить в объекте, и строчку формировать на основе объекта. При этом регулярные выражения вообще можно не использовать.
var allparams = {};
if($("#esche-podkl option:selected").val() != ""){
selname = $('#esche-podkl').attr('name');
selval = $("#esche-podkl option:selected").val();
allparams[selname] = selval;
}
if($("#mozhno-kleit option:selected").val() != ""){
selname = $('#mozhno-kleit').attr('name');
selval = $("#mozhno-kleit option:selected").val();
allparams[selname] = selval;
}
// ваши if-ы дальше
var str = "";
for(var sel in allparams) {
str += sel+"="+allparams[sel]+"&";
}
Алгоритм такой, сначала все ваши if-ы собирают объект.
После за один проход из этого объекта собирается строчка.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я решил схитрить и у меня это не получилосьВ итоге запутался еще больше