如果其他函数在对焦时返回true,如何运行一个函数

时间:2019-06-23 08:06:42

标签: javascript jquery html

我对焦点事件有2个内联函数调用。

如果第一个函数返回true而不调用第一个函数中的第二个函数,我希望第二个函数运行。

此字符串01-Dec-2018 - t57 ( 1 )0内的可用库存量。

我尝试了以下代码,但没有输出。

function checkStockAvailable(batchNo, qty) {
  var startpos = batchNo.indexOf("( ");
  var endpos = batchNo.indexOf(" )");
  var stockQty = batchNo.substring(startpos + 2, endpos);
  if (qty > stockQty) {
    alert("Entered quantity can not be greater than stock quantity, please try again.");
    return false;
  }
  if (qty <= stockQty) {
    return true;
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="number" value="10" onfocusout="if((return checkStockAvailable('01-Dec-2018 - t57 ( 1 )0', $(this).val())) == true){saveDetailData('1',$(this).val(),'columnName' )})">

无输出显示

4 个答案:

答案 0 :(得分:0)

function function1(batchNo, qty) {
  var startpos = batchNo.indexOf("( ");
  var endpos = batchNo.indexOf(" )");
  var stockQty = batchNo.substring(startpos + 2, endpos);
  if (qty > stockQty) {
    alert("Entered quantity can not be greater than stock quantity, please try again.");
    return false;
  }
  if (qty <= stockQty) {
    return true;
  }
}

function function2(a,b,c){
    alert('yes came in function 2');
    }
<input type="number" value="10" onfocusout="function1('01-Dec-2018 - t57 ( 1 )0','10') && function2('4','5','6')"/>

您可以通过这样做来简化通话

onfocus="function1() && function2()"

如果function1返回真实值,则将运行function2;如果function1返回假值,则将忽略function2。

查看此fiddle。尝试更改function1的返回值以查看效果。

答案 1 :(得分:0)

您可以将data-* global attributes与其他信息一起使用,并将其用于检查。

function checkStockAvailable(element) {
    var qty = +element.value,
        stockQty = +element.dataset.stockQty;

    console.log(qty, stockQty);
    if (qty <= stockQty) return true;
    console.log("Entered quantity can not be greater than stock quantity, please try again.");
}
<input
    type="number"
    value="10"
    onfocusout="checkStockAvailable(this)"
    data-batch-no="01-Dec-2018 - t57 ( 1 )0"
    data-stock-qty="1"
>

答案 2 :(得分:0)

<input type="number" value="10" onfocusout="if(f1()){f2()}">
<script>
  function f1() {
    return true;
  }

  function f2() {
    alert(4);
  }
</script>

答案 3 :(得分:-1)

您可以使用onfocusout= "func1() && func()"(由@Shahzad回答)

func1()将用于您的条件语句,而func2()将依赖于func1()

如果您仍然面临问题,则可能存在一些suntax问题。

 function uppercase() {
    var x = document.getElementById("tText");
  	x.value = x.value.toUpperCase();
  }
  
  function checkBoolean(){
  return true;
  }
<input type="text" id="tText" value="test" onfocusout="checkBoolean() && uppercase()">