问题描述
this.model = this.getConnection().getModel(collectionName);
问题是<select class="form-select" id="topicId" name="topicId" onchange="javascript:
var data = $(':input[name]','#dynamic-form').serialize();
$.ajax(
'ajax.PHP/form/help-topic/' + this.value,{
data: data,dataType: 'json',success: function(json) {
var eng1 = document.querySelectorAll('input[type="text"]');
eng1[eng1.length-1].style.display = 'none';
}
});">
-类型为 text 的引号给我带来了严重的问题,因为整个代码段已经包装在“”中。
但是到底该如何解决呢?
有什么想法吗?
解决方法
最简单的解决方案是将onchange
属性中的代码提取到一个函数中,然后从该属性中调用该函数。
function sendAjax() {
var data = $(':input[name]','#dynamic-form').serialize();
$.ajax(
'ajax.php/form/help-topic/' + this.value,{
data: data,dataType: 'json',success: function(json) {
var eng1 = document.querySelectorAll('input[type="text"]');
eng1[eng1.length - 1].style.display = 'none';
}
});
}
<select class="form-select" id="topicId" name="topicId" onchange="sendAjax()">
或者您可以从JS绑定事件监听器,而无需使用onchange
。
$("#topicId").change(function() {
var data = $(':input[name]',success: function(json) {
var eng1 = document.querySelectorAll('input[type="text"]');
eng1[eng1.length - 1].style.display = 'none';
}
});
});
<select class="form-select" id="topicId" name="topicId">
如果出于某些原因必须将所有代码放在onchange
中,则可以在名称周围使用单引号而不是双引号。您需要对它们进行转义,因为选择器周围会使用单引号。
<select class="form-select" id="topicId" name="topicId" onchange="javascript:
var data = $(':input[name]','#dynamic-form').serialize();
$.ajax(
'ajax.php/form/help-topic/' + this.value,{
data: data,success: function(json) {
var eng1 = document.querySelectorAll('input[type=\'text\']');
eng1[eng1.length-1].style.display = 'none';
}
});">
最后,您只需使用$('input:text:last').hide()
。
我不明白为什么不将所有内容都写在<script>
..中?但是无论如何,您都可以将所有单个标签(')更改为backtag,然后将全局双标签(onchange="..."
)更改为单个标签。