我在IE中启动on change
事件时遇到问题。我尝试的所有功能都在其他浏览器中工作,如Chrome,Mozilla,Safari,Opera ...但不是在IE 11中
这是我的代码
HTML 的
<form method="post" id="exchangeType" action="/orders/vesselExchange">
...
<label id="deliveryDateTitleLabel" for="deliveryDate"><?= __('First time') ?></label><br/>
<label class="radio radio-inline m-r-20">
<input type="radio" name="deliveryDate" value="asap" checked>
<i class="input-helper"></i>
<?= __('First time') ?>
</label>
<label class="radio radio-inline m-r-20">
<input type="radio" name="deliveryDate" value="custom">
<i class="input-helper"></i>
<?= __('Second time') ?>
</label>
...
</form>
的jQuery
$('#exchangeType input').on('change', function() {
console.log('in function');
let option = ($('input[name=deliveryDate]:checked', '#exchangeType').val());
let dateTimePicker = $('#showPicker');
if (option === 'custom') {
dateTimePicker.removeClass('hidden');
}
if (option === 'asap') {
dateTimePicker.addClass('hidden');
}
});
到目前为止我一直在尝试
$(document).on('change','#exchangeType input' ,function(){
...
}
$(document.body).on('change','#exchangeType input' ,function(){
...
}
$('#exchangeType').on('change','input[name=deliveryDate]',function(){
...
}
与“click
”相同的功能(不更改)
我已经在stackoverflow上阅读并实现了similair问题的一些答案:
- Jquery select change not firing
- .val() doesn't trigger .change() in jquery
- OnChange not firing in IE
但它不起作用......
谢谢
答案 0 :(得分:0)
有时onChange事件不适用于IE。您可以尝试其他事件来实现相同的目标。请改用密钥。希望这可以帮助!
这里有单选按钮,所以你可以像这样使用,下面给出了一些例子:
<input type="radio" name="namehere" value="1" onclick="handleClick();" onchange="javascript:yourmethod()"/>
function handleClick()
{
this.blur();
this.focus();
}
答案 1 :(得分:0)
由于这在IE中不起作用,你可以这样做:
var previousFormState = getFormState();
setTimeout(function() {
var formState = getFormState();
if (differs(formState, previousFormState)) {
handleChange();
previousFormState = formState;
}
}, 1000);
这里使用了很多function
,我相信你可以实现它们,但算法是定期测试form
状态是否已经改变,如果是,则处理更改。您需要确保在使用submit
处理程序.submit()
表单之前最后一次执行此操作。