我有这样的表格:
<form action="/web/events/add" id="EventAddForm" method="post" accept-charset="utf-8">
<div style="display:none;"><input type="hidden" name="_method" value="POST"/></div>
<div class="input text">
<label for="AddressSearch">Search address</label>
<input name="adress_search" type="text" id="AddressSearch"/>
</div>
<div class="input text required">
<label for="EventAddress">Address</label>
<input name="data[Event][address]" type="text" id="EventAddress"/>
</div>
<div class="input text required">
<label for="EventPostNr">Post nr</label>
<input name="data[Event][post_nr]" type="text" id="EventPostNr"/>
</div>
<div class="input text required">
<label for="EventCity">City</label>
<input name="data[Event][city]" type="text" id="EventCity"/>
</div>
<div class="submit">
<input onclick="disableSubmit(this)" type="submit" value="Save"/>
</div>
</form>
所以有disableSubmit
函数不允许将表单提交两次。
function disableSubmit(b)
{
b.disabled = true;
b.value = 'Saving...';
b.form.submit();
}
正在调用并且没有问题,但我想包括另一个函数,如果某些字段处于焦点或按下回车键,则不允许提交表单。这是:
$("#EventAddForm").submit(function( event ) {
if ( $("#AddressSearch").is(":focus") ||
$("#EventPostNr").is(":focus") ||
$("#EventCity").is(":focus") ||
event.which == 13){
event.preventDefault();
}
});
在我引入disableSubmit
函数之前它曾经工作过,我现在需要的是得到两个被调用的函数,但是无法理解它。
非常感谢任何帮助或指导。
答案 0 :(得分:0)
只需保留一个阻止多次提交的变量:
jQuery(function($) {
var submitting = false;
$("#EventAddForm").submit(function(event) {
if (submitting) {
event.preventDefault();
return;
}
submitting = true;
// rest of code here
});
});
答案 1 :(得分:0)
在输入字段中,在那里粘贴所需的单词,不再需要调用不是disableSubmit的函数。像这样:
<input name="adress_search" type="text" id="AddressSearch" required />
答案 2 :(得分:0)
由于没有任何建议有效,我一直在进行研究,并找到了一个帮助我的解决方案。希望它对未来的某些人有用。
var input = document.getElementById('AddressSearch');
google.maps.event.addDomListener(input, 'keydown', function(e) {
if (e.keyCode == 13)
{
if (e.preventDefault)
{
e.preventDefault();
}
else
{
// Since the google event handler framework does not handle early IE versions, we have to do it by our self. :-(
e.cancelBubble = true;
e.returnValue = false;
}
}
});