html 当readonly为true时激发TextBox的onchange事件

nimxete2  于 2022-12-16  发布在  其他
关注(0)|答案(5)|浏览(130)

我尝试在更改只读文本框时使用一些功能。但是当我尝试使用javascript更新文本框时,更改事件没有为文本框触发。

<script type="text/javascript">
        $(document).ready(function () {
            $('input[id$=_txtTest]').bind("change", function () {
                alert("test");
            });
                        });
        function ChangeText() {
            $('input[id$=_txtTest]').val('hello');
         }
    </script>

我在点击按钮时调用ChangeText方法,但是它没有为文本框触发textchange事件。
有谁能告诉我这是怎么回事?

vuv7lop3

vuv7lop31#

你得这么做:http://jsfiddle.net/kmvSV/1/

$(document).ready(function () {
   $('input[id$=_txtTest]').bind("change", function () {
     alert($(this).val());
   });
   $('button').bind("click", function () {
     $('input[id$=_txtTest]').val('hello').trigger('change');
   });
 });
sshcrbum

sshcrbum2#

Change事件仅由真实的用户事件触发,而不是JavaScript操作。
您可以触发更改事件,如下所示:

$('input[id$=_txtTest]').val('hello').change();
qlckcl4x

qlckcl4x3#

你可以这样做

function setValueOfTextBox()
{
    var myElement = document.getElementById("textboxid");
    myElement.value = "hello";
    //following code fire change event for you text box
    if (myElement.onchange) 
         myElement.onchange();
}
gjmwrych

gjmwrych4#

我相信出于某种安全原因,事件不会被触发。但是您可以通过触发该元素上的特定事件来实现这一点。例如$('input[id$=_txtTest]').trigger('change');
希望这能帮到什么人。

b91juud3

b91juud35#

onkeypress事件 * 或 * several other events

因为只读字段实际上并没有改变; onChange事件不会在其上触发。有several other events可以听。
下面是一个简短的演示:

input {
  font-size: 16px;
  line-height: 30px;
  padding: 3px;
  border: 2px darkblue solid;
}
<script>
function sayHi(evt) {

  alert('Are you tyring to edit a read-only? Click OK for details.')
  alert(JSON.stringify({
    keyCode: evt.keyCode, 
    charCode: evt.charCode, 
    altKey:evt.altKey, 
    ctrlKey: evt.ctrlKey, 
    shiftKey: 
    evt.shiftKey
  }), null, 2);
}
</script>


<input onkeypress="sayHi(event);" readonly placeholder="A readonly field..." />

相关问题