0

编辑**为了让这更清楚一点....

当我用鼠标单击输入放置按钮时,它会通过 ajax 发布,就像我想要的那样:mysite.com:8888/save/1?val=&val2=&val3=...

当我在文本字段中并点击“输入”时,它会提交给自己,而不是通过 ajax ......它就像一个常规的提交表单......我只是想弄清楚如何获得“输入” " 按钮也可以通过 ajax 发布...

这是表单的(部分)html:

<legend>Add Directory Entry</legend>
<div id="statusmessage"></div>
<div class="form-radios clearfix">
    <label class="option" for="edit-type-0"><input id="edit-type-0" name="type" value="0" class="form-radio clearfix" type="radio"> option1</label>

    <label class="option" for="edit-type-1">
    <input id="edit-type-1" name="type" value="1" class="form-radio clearfix" type="radio"> option2 </label>

    <label class="option" for="edit-type-2">
    <input id="edit-type-2" name="type" value="2" class="form-radio clearfix" type="radio"> option3 </label>

    <label class="option" for="edit-type-3">
    <input id="edit-type-3" name="type" value="3" class="form-radio clearfix" type="radio"> option4 </label>
</div>

<label for="edit-name">Name: <span class="form-required" title="This field is required.">*</span></label>
<input maxlength="128" name="name" id="edit-name" size="60" value="" class="form-text required" type="text">

<label for="edit-phone">Phone: </label>
<input maxlength="128" name="phone" id="edit-phone" size="60" value="" class="form-text" type="text">

<input name="op" id="edit-save" value="Save Entry" class="form-submit ahah-processed" type="submit">

用于创建提交按钮的 php 是:

$form['addentry']['save'] = array(
        '#type' => 'submit',
        '#value' => t('Save Entry'),
        '#submit' => array(),
        '#ahah' => array(
            'path' => 'family/'.$user->uid.'/savenewentry',
            'wrapper' => 'ahah-example-new-row-wrapper',
            'method' => 'prepend',
            'effect' => 'fade',
            'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
        ),
    );

所以,当我点击按钮时,我得到进度指示等,当我点击“输入”时,整个页面被提交并刷新......


我有一个使用提交按钮的 ajax 表单(必须输入 type="submit"... 不能使用 "button")。当我单击它时,它会按预期工作,因为它实际上并没有“提交”信息,但是当我按 Enter 时,它会完全提交表单。我一直在浏览这里的论坛,我可以找到很多关于禁用该行为的帖子,但我希望它能够像“单击”按钮并按下回车键一样工作......我尝试了在其他一些线程中发布的各种迭代(很多带有“preventDefault”),但它一直在输入时提交......

/*
There are a lot more fields, but if, for example, you're in the 
zip code text field and hit enter, the form will "submit".  
If you click enter, it posts and responds as expected... 
*/
<input type="text" value="" id="edit-zip" name="zip" />
<input type="submit" value="Save" id="edit-save" name="op">

我试过这个:

  $('form#my-custom-form input#edit-save').keypress(function(e) {
    if(e.which == 13) {
        e.preventDefault();
        $('input#edit-save').click();
    }
 });
4

3 回答 3

1

一般来说,当任何表单元素具有焦点时按回车键会导致表单的提交事件触发。

$('form#my-custom-form').submit(...your handler function here...)

所以以与处理按钮相同的方式处理此事件

于 2011-06-07T19:56:01.410 回答
0

不要将preventDefault() 绑定到您的提交按钮click事件,而是将其绑定到表单的submit事件。

$('form').submit(function(e){
e.preventDefault();
});
于 2011-06-07T19:56:42.487 回答
0

您的问题与此类似:
event.preventDefault() not working in Mozilla or IE
And heres your solution
https://stackoverflow.com/a/14486639/1949475

于 2013-01-23T19:09:48.383 回答