jquery不使用if语句

时间:2017-08-18 11:28:49

标签: php jquery mysql database forms

我正在使用带有ajax update方法的jquery脚本,该方法绑定到表单元素的focus事件。它工作,但我首先想检查表单元素是否为空。一旦我这样做,该功能就会停止工作。以下是代码:

<script type="text/javascript">
    if ($('#txt_updateone').val().trim().length > 0) {
        function single_change(txt_updateone) {
            $.ajax({
                type: "POST",
                data: { "txt_updateone": 1 },
                url: "single_scorechange.php",
                success: function (data) {
                    $('#listinscore').load(document.URL + '#listinscore');

                },
                error: function (xhr) {
                    alert("error");
                }

            });

            return false;

        }
    }
</script>

txt_updateone是textarea,onfocus事件调用single_change函数。当我在第二行删除if .....时,它可以工作,但我希望它只在textarea不为空时才能工作。

5 个答案:

答案 0 :(得分:2)

有两种方法。

1)在您调用此函数的位置验证数据。

2)在使用beforeSend发送ajax请求之前验证数据。

<script type="text/javascript">
    function single_change(txt_updateone) {
        $.ajax({
            type: "POST",
            data: { "txt_updateone": 1 },
            url: "single_scorechange.php",
            success: function (data) {
                 $('#listinscore').load(document.URL + '#listinscore');
            },
            beforeSend: function(xhr) {
                alert("Enter some value");
                return $('#txt_updateone').val().trim().length > 0 ? true: false;
            }
            error: function (xhr) {
                alert("error");
            }
        });
        return false;
    }
</script>

答案 1 :(得分:1)

正如您在函数之前提到的if条件,该函数实际上是在那里声明的。所以你要调用未定义的函数。

function single_change(txt_updateone) {
    if ($('#txt_updateone').val().trim().length < 1) {
        //form element is empty
        return false;
    }
    $.ajax({
        type: "POST",
        data: { "txt_updateone": 1 },
        url: "single_scorechange.php",
        success: function (data) {
            $('#listinscore').load(document.URL + '#listinscore');

        },
        error: function (xhr) {
            alert("error");
        }

    });

    return false;
}

答案 2 :(得分:1)

将您的代码更改为

function single_change(txt_updateone) {
  if ($('#txt_updateone').val().trim().length > 0) {
    $.ajax({
        type: "POST",
        data: {
          "txt_updateone": 1
        },
        url: "single_scorechange.php",
        success: function(data) {
          $('#listinscore').load(document.URL + ' #
              listinscore ');

            },
            error: function(xhr) {
              alert("error");
            }

        });

      return false;

    }
  }

您需要在方法内执行if检查。

答案 3 :(得分:0)

只需交换函数和if语句

//Declare function in all cases
function single_change(txt_updateone) {
    //When you call function, check if statement.
    if ($('#txt_updateone').val().trim().length > 0) {
        $.ajax({
            type: "POST",
            data: { "txt_updateone": 1 },
            url: "single_scorechange.php",
            success: function (data) {
                $('#listinscore').load(document.URL + '#listinscore');

            },
            error: function (xhr) {
                alert("error");
            }
        });
        return false;
    }
}

答案 4 :(得分:0)

如果文本区域非空(并且很可能在此代码运行时,它可能为空),您正在做的是定义您的函数。我认为你的意思是始终定义函数,但只有在文本区域有内容时才执行正文。

如果这是你想要的,这可能会有效:

<script type = "text/javascript">
  function single_change ( txt_updateone ) {
    var content = $('#txt_updateone').val().trim();
    if (!content.length) { return; }
    // now execute function with non-empty content.
  }

</script>