Моя форма получает предварительно загруженную нагрузку со значениями из строки запроса. В запросе, когда страна = Австралия, выбирается «Австралия». Но когда страна = АВСТРАЛИЯ или страна = австралия, ничего не выбирается.Сделать выбор значения параметра нечувствительным к регистру/иметь несколько значений
Мой поле выбора:
<select id="country" name="country" style="border: 1px solid rgb(204, 204, 204); font-family: Arial,Helvetica,sans-serif; font-size: 9pt; width: 150px;">
<option value="" selected="selected">Please select country</option>
<option value="Australia">Australia</option>
<option value="Austria">Austria</option>
</select>
Я думаю <option value="Australia, AUSTRALIA, australia">
бы заставить его работать. Как мне это сделать? Будет ли это (Can an Option in a Select tag carry multiple values?) вариантом?
В противном случае, как я могу сделать поле выбора поля незаметным для предпопуляции с значениями запроса?
JS для строки запроса добавил:
function populate(form) {
if (location.search == null || location.search.length < 1) return; // no querystring
var pairs = location.search.substring(1).split("+");
for (var p = 0; p < pairs.length; ++p) {
var pair = pairs[p].split("=");
var name = pair[0];
var value = unescape(pair[1].replace(/\+/g, " "));
var fld = form.elements[name];
var ftype = null;
var farray = false;
var atype = Array;
if (fld != null) {
if (fld.length != null && fld.length >= 1 && fld[0].type != null && fld[0].type != undefined) {
ftype = fld[0].type;
farray = true;
} else {
ftype = fld.type;
}
}
switch (ftype) {
case "text":
case "hidden":
case "textarea":
if (farray) fld = fld[0]; // only handle first-named for this type
fld.value = value;
break;
case "select-one":
case "select-multiple":
if (farray) fld = fld[0]; // only handle first-named for this type
for (var o = 0; o < fld.options.length; ++o) {
var opt = fld.options[o];
var oval = opt.value;
if (oval == null || oval == "") oval = opt.text;
if (oval == value) {
opt.selected = true;
break;
}
}
break;
case "checkbox":
case "radio":
if (!farray) {
// single checbox or radio of that name:
fld.checked = true;
} else {
for (var cr = 0; cr < fld.length; ++cr) {
if (fld[cr].value == value) {
fld[cr].checked = true;
break;
}
}
}
break;
default:
alert("Unknown field type encountered for field " + name + ": " + ftype);
break;
} // end of switch
} // end of loop on fields from qs
}
Показать код, в котором вы предварительно заполняете запрос на основе строки запроса – Ian
Из немного расплывчатой информации. Похоже, что у вас есть потенциальная точка входа XSS, если вы просто выводите информацию непосредственно из QS в источник, без предварительной обработки на нем (иначе вы уже превратили бы его в известное значение для своего раскрывающегося списка). – Psytronic
Извините за неопределенность моего оригинального сообщения. Первый таймер здесь! Итак, @psytronic, вы говорите, что я должен добавить материал для предварительной обработки того, что исходит из запроса? – pedroargenti