У меня есть элемент формы, который содержит приблизительно 5 полей, которые заключительный запрос собирается создать путем обработки значений те поля. Таким образом, я хочу отправить только заключительный запрос, не всех тех, к серверу. Как я могу исключить те поля из того, чтобы быть отправленным (использующий jQuery)?
<form action="abc/def.aspx" method="get">
<input type="text" name="field1" />
<input type="text" name="field2" />
<input type="text" name="field3" />
<input type="text" name="field4" />
<input type="text" name="field5" />
<input type="hidden" name="final" />
<input type="submit" value="Send" />
</form>
Вывод представления формы похож ниже:
abc/def.aspx?field1=val1&field2=val2&field3=val3&field4=val4&field5=val5&final=finalQuery
Удалить элемент при отправке.
В обработчике onsubmit:
$(formElement).submit(function() {
$(this.field1).remove(); //removing field 1 from query
return true; //send
});
Отключение элемента формы также останавливает его ввод в запрос. (Проверено в Chrome)
$(formElement).submit(function() {
this.field1.disabled = true;
return true; //send
});
Я думаю, что лучшим решением будет обработать отправку, а затем отправить запрос самостоятельно:
$(form).submit(function() {
//do everything you need in here to get the final result
var finalResult = alotoflogic();
$.get("abc/def.aspx",final=finalResult, "callbackfunction", "responseType");
return false;
});
, который должен делать именно то, что вы хотите. РЕДАКТИРОВАТЬ: как Алекс указал, это решение не отправит вас на эту страницу, просто получите результаты, если вам нужно перейти на новую страницу, которую вы можете сделать:
$(form).submit(function() {
//do everything you need in here to get the final result
var finalResult = alotoflogic();
window.location('abc/def.aspx?final='+finalResult);
return false;
});
Таким образом, браузер перенаправляется на эту страницу, и только конечный результат Отправить.