JS onclick函数返回true

时间:2015-05-16 03:36:25

标签: javascript php jquery

我创建了一个按钮

<button type="submit" class="btn btn-info" name="enroll" onClick="return clicknow()">
JS中的

我写了clicknow函数如下:

<script>
function clicknow()
{
    jQuery('#sheduling_wait').show();
    var roll_number = jQuery('#roll_number').val();
    var class_n = jQuery('#class_n').val();
    //alert(class_n);
    var FirstData = "roll_number=" + roll_number+"&class_n="+class_n;
    var currenturl = jQuery(location).attr('href');
    var url = currenturl;
        jQuery.ajax({
            dataType : 'html',
            type: 'GET',
            url : url,
            data : FirstData,
            complete : function() { },
            success: function(data) 
                {

                    data1=jQuery(data).find('div#stfflistdiv');
                    //jQuery('#staff').show();
                    jQuery('#staff').html(data1);
                    var data2 = jQuery('#staff #stfflistdiv').html();
                    console.log(data2);
                    if(data2 == '2')
                    {
                        jQuery('#staff').show();
                        jQuery('#staff').html("This roll No is already Saved, Please add another roll no");
                        jQuery('#sheduling_wait').hide();
                        return false;
                    }
                    else
                    {
                        jQuery('#sheduling_wait').hide();
                        return true;
                    }

                }
        });
}
</script>

我遇到问题,当data2的值等于2时,由于return false,页面会指示而不是停留在同一页面上,

如果data2 == 2如何保持同一页面,并在data2 == 1的值

时提交

3 个答案:

答案 0 :(得分:4)

你必须这样做

<button type="submit" class="btn btn-info" name="enroll"> <!-- remove onclick-->

然后

$(document).ready(function() {
  $("#myform").submit(function(event){

    if(data ==2)
    {
      event.preventDefault(); //prevent the default submit action
      //...your code
    }else{
      //other code
    }

  });
});

答案 1 :(得分:2)

return语句返回succes函数的数据。不适用于clicknow()

选项: 在clicknow中将变量设置为false。 var ret = false; 并设置ajax async:false(不推荐) 成功函数设置你的变量为true或false;

if(data2 ==&#39; 2&#39;){ret = false; } else {ret = true; }

并进入结束功能clicknow return ret;

抱歉,我的英语。

问候。

答案 2 :(得分:0)

外部函数不返回从success回调返回的值。实际上,在ajax调用返回之前不会调用success回调,这是在外部函数已经返回之后。

您可以在表单上注册提交事件处理程序,而不是在提交按钮中添加onclick属性。在提交事件处理程序中,您可以调用e.preventDefault()来停止正常的表单提交。然后,当ajax调用返回并且您希望表单提交时,您可以调用表单元素的submit()方法。 (不要在表示表单的jQuery对象上调用submit(),这会导致再次调用submit-event处理程序,这将导致无限循环。在实际表单上调用submit()元素。)

<script>
jQuery(function($) {
    $('#myForm').submit(function(e) { // <-- Use your form's id
        e.preventDefault();
        var form = this;
        $('#sheduling_wait').show();
        $.ajax({
            type: 'GET',
            url: $(location).attr('href'),
            data: {
                roll_number: $('#roll_number').val(),
                class_n: $('#class_n').val()
            },
            dataType: 'html',
            success: function(html) {
                var $stfflistdiv = $(html).find('#stfflistdiv');
                if ($stfflistdiv.html() == '2') {
                    $('#staff').html("This roll No is already Saved, Please add another roll no").show();
                } else {
                    $('#staff').html($stfflistdiv).show();
                    form.submit();
                }
            },
            complete: function() {
                $('#sheduling_wait').hide();
            }
        });
    });
});
</script>

注意:

  1. 在文档就绪处理程序中注册事件处理程序。这是上面代码的jQuery(function($) {部分。 jQuery对象作为第一个参数传递,因此如果您将其命名为$,则可以安全地使用$来表示函数内的jQuery,即使您已调用jQuery.noConflict()
  2. 使用对象进行ajax data设置,而不是连接自己的查询字符串。它更干净,而且值得到了正确的编码。
  3. 使用complete回调隐藏#sheduling_wait元素,因为即使出现错误,complete也会执行。