繁体   English   中英

如何将Textbox值传递给Javascript函数?

[英]How to pass Textbox value to Javascript function?

我的查看代码如下所示,我在按键事件中调用javascript函数。 我想将控制值传递给javascript函数。 我尝试使用'this'和@this,但是没有用。

@Html.TextBoxFor(m => m.LeaveDetailsList[0].LeaveTaken, new {id = "numLeaveTaken1", width = "100", @onkeyup = "checkInp2(this);" })

**编辑** JavaScript代码:

function checkInp2(ControlId) {
    var x = document.getElementById(ControlID).value;
    if (isNaN(x)) {
        document.getElementById("btnSave").disabled = true;
        return false;
    }
    else {
        document.getElementById("btnSave").disabled = false;
    }
}

您应该避免使用行为污染标记,而应使用Unobtrusive Javascript 给文本框一个类名

@Html.TextBoxFor(m => m.LeaveDetailsList[0].LeaveTaken, new { @class = "leave-taken" })

然后脚本

var button = $('#btnSave'); // cache it
$('.leave-taken').keyup(function() {
  if(isNaN($(this).val())) {
    button.prop('disabled', true);
  } else {
    button.prop('disabled', false);
  }
});

或者可以减少到

$('.leave-taken').keyup(function() {
    button.prop('disabled', !isNaN($(this).val()));
});

还要注意,控件现在可以使用css- .leave-taken { width: 100px; } .leave-taken { width: 100px; }

我认为您的onkeyup事件应该可以工作(即使现在内联事件实际上并不是最佳实践列表的首位),但不能与当前功能一起使用。 尝试将其更改为:

function checkInp2(ControlId) {
   var x = ControlId.value;
   ...
}

您要this事件(触发事件的元素)发送给函数,因此无需使用getElementById

如果您想通过ID显式获取元素,则可以使用..

document.getElementById('numLeaveTaken1').value; //pure JavaScript 

$('#numLeaveTaken1').val(); //jQuery

在这种情况下,你可以跳过this一起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM