jquery 不能使用 if 语句

Posted

技术标签:

【中文标题】jquery 不能使用 if 语句【英文标题】:jquery not working with if statement 【发布时间】:2018-01-27 01:50:25 【问题描述】:

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

<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 是一个文本区域,onfocus 事件调用 single_change 函数。当我在第二行删除 if..... 时,它可以工作,但我希望它只有在 textarea 不为空时才能工作。

【问题讨论】:

在函数内移动if 语句? 你的脚本是否在你的元素 #txt_updateone 之后? 【参考方案1】:

有两种方法。

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 感谢一百万 Nagarjiun!它完美地工作!再次感谢您!【参考方案2】:

把你的代码改成

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】:

正如你在函数之前提到的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;

【讨论】:

只有一个退出函数总是最好的,现在你有两个,但也可以。 它被称为 early return 而不是将整个 ajax 调用包装到 if 循环中。这提高了可读性。 @tilz0R 是编码风格,你不需要为此投反对票。比较你和我的答案,看看哪一个更易读? @Thamaraiselvam 你正在做反对 OP 需要什么。他需要,如果长度大于 0,那么只有 ajax 会运行。你正在做相反的事情 感谢@AlivetoDie 指出问题。我没看到。【参考方案4】:

只需交换函数和 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;
    

【讨论】:

【参考方案5】:

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

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

<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>

【讨论】:

以上是关于jquery 不能使用 if 语句的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能在使用 Javascript 的 if 语句中重新分配这个变量? [复制]

为啥我不能使用正则表达式来评估 if...else 语句 [重复]

Python:为啥 if-else 一行语句在 else 中不能与 continue 一起使用?

如何解决 SAS中 LAG不能在条件语句中使用的问题!

为什么If语句不能使用Python和Pygame

不能在 const 声明中使用 if 语句,但三元运算符有效[重复]