单击功能正常运行,但是当我使用更改功能时,它没有达到提交功能
示例1:
$('button').click(function(e) {
$('form').submit(function(event) {
event.preventDefault(); //prevent default action
var post_url = $(this).attr("action"); //get form action url
var request_method = $(this).attr("method"); //get form GET/POST method
var form_data = new FormData(this); //Encode form elements for submission
$.ajax({
url : post_url,
type: request_method,
data : form_data,
contentType: false,
processData:false,
}).done(function(response) { //
//pass
}).fail(function(response) {
//fail
});
});
});
示例2:
$('input').change(function(event) {
$(this).parents('form').submit(function(event) {
event.preventDefault(); //prevent default action
var post_url = $(this).attr("action"); //get form action url
var request_method = $(this).attr("method"); //get form GET/POST method
var form_data = new FormData(this); //Encode form elements for submission
$.ajax({
url : post_url,
type: request_method,
data : form_data,
contentType: false,
processData:false,
}).done(function(response) {
//pass
}).fail(function(response) {
//fail
});
});
});
有人可以帮我吗,为什么示例2 不能按我的要求工作。如果您看到两个代码是相同的,但是仅更改了事件名称。
我犯了错误或其Jquery的默认行为吗?
答案 0 :(得分:0)
我想转介您另一个答案-Detecting input change in jQuery?
问题出在未在输入字段上触发的“ change”事件,您应该正在监听其他事件,例如“ input”,“ keydown”,“ keypress”或“ change”事件您正在收听的音乐应该使用其他表单元素,例如select(下拉框)
答案 1 :(得分:0)
尝试一下。
$(this).parent('form').submit();
$('form').on('submit', function(event) { //dostuff });
对于change
事件,请尝试使用.on()
$('input').on('change', function(event) { //dostuff });
注意:仅当元素失去焦点时,使用change
才会触发事件。如果您希望事件在用户按下某个键时触发,删除,粘贴等。您想使用input
$('input').on('input', function(event) { //dostuff });
答案 2 :(得分:0)
通过编写
$(this).parents('form').submit(function(event) {});函数,您正在做的是将事件绑定到表单。您需要做的是也触发表单提交。对于您的代码,我建议您在编写的绑定函数结束之后也添加一个
$(this).parents("form").submit();。