【问题标题】:SUBMIT FORM with mouse clicking and enter button用鼠标单击并输入按钮提交表格
【发布时间】:2012-04-13 17:02:14
【问题描述】:

我也在通过鼠标点击和ENTER提交表单。

Ajax Call 正在检查我已经在 DATABASE 中是否有任何指定。如果没有,用户可以提交表单,否则提交按钮将被禁用

JQUERY

function check_designation(e){

    text = $('#req1').val();
    data = "data=" + text;          
    text_length = text.length           

    if(text_length == 0)
    {
        $('#result_span').html('');
    }       

    if(text_length > 3 ){
        $.ajax({
            url: "designation_ajax.php",
            type: "POST",
            data: data,    
            cache: false,
            success: function (response) {
                if ($.trim(response) == "access") { 
                    $("#result_span").html('<div class="green">' + text + ' is available '+'</div>');
                    $('#create_desg').removeAttr('disabled');
                }
                else if ($.trim(response) == "no access") {                                                         
                    $("#result_span").html('<div class="red">' + text + ' is already in use'+'</div>'); 
                    $('#create_desg').attr('disabled','disabled');                                                      
                }

                else { 

                    alert('Sorry, unexpected error. Please try again later.');

                }
            }      
        }); 
    }
    else{
        $("#result_span").html('');     

    }

    return true;        
}

HTML 表单

<form id="formID" class="formular" method="POST" action="" onsubmit="formSubmit()" >
  <fieldset>
    <legend>Create Desination</legend>
    <label> Designation<br clear="all" />
      <input autocomplete="off" onkeyup="check_designation(event)" value="" class="validate[required,minSize[4]] text-input float_left" type="text" name="name" id="req1" />
      <span id="result_span"></span>
    </label>
    <br clear="all" />
    <input id="create_desg" value="Submit" type="button" />
  </fieldset>
</form>

问题::::

现在会发生什么 DISABLE 按钮不是解决方案...如果表中已经有一个 DESIGNATION .. 提交按钮将禁用但按 ENTER 它将提交并且我不想重新加载页面。当我按下 ENTER 时,AJAX 不工作

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

    您必须从 onsubmit 处理程序返回 false 才能取消默认操作。但我可能会稍微清理一下您的代码并悄悄订阅提交事件:

    <form id="formID" class="formular" method="POST" action="">
        <fieldset>
            <legend>Create Desination</legend>
            <label>
                Designation<br clear="all" />
                <input autocomplete="off" value="" class="validate[required,minSize[4]] text-input float_left" type="text" name="name" id="req1" />
                <span id="result_span"></span>
            </label>
            <br clear="all" />
            <input id="create_desg" value="Submit" type="button" />
        </fieldset>
    </form>
    

    您会注意到我故意从输入字段中删除了onkeyup 事件。每次某些用户在此字段内按下某个键时,用 AJAX 请求敲击您的服务器对您的服务器没有任何好处。如果您想实现这一点,我建议您在发送 AJAX 请求之前等待一些输入累积和限制。

    然后:

    $(function() {
        $('#formID').submit(function() {
            var text = $('#req1').val();
            if(text.length == 0) {
                $('#result_span').html('');
            }       
    
            if(text.length > 3) {
                $.ajax({
                    url: 'designation_ajax.php',
                    type: 'POST',
                    data: { data: text },
                    cache: false,
                    success: function (response) {
                        if ($.trim(response) == 'access') { 
                            $('#result_span').html('<div class="green">' + text + ' is available '+'</div>');
                            $('#create_desg').removeAttr('disabled');
                        }
                        else if ($.trim(response) == 'no access') {
                            $("#result_span").html('<div class="red">' + text + ' is already in use'+'</div>'); 
                            $('#create_desg').attr('disabled', 'disabled');
                        } else { 
                            alert('Sorry, unexpected error. Please try again later.');
                        }
                    }      
                }); 
            } else {
                $('#result_span').html('');     
            }
    
            // return false to prevent the default action
            return false;
        });
    });
    

    另外,我会让 designation_ajax.php 脚本返回 JSON,而不是您在 success 回调中解析和修剪的一些 accessno access 字符串。

    【讨论】:

    • 不,首先你调用你的函数然后你返回 false,像这样:onsubmit="formSubmit(); return false;"。或者不显眼地订阅提交处理程序,如我的回答所示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2017-08-15
    • 2013-10-18
    • 2012-08-07
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多