我从复选框中读取数据时遇到了一些问题。
{foreach value=artist2 from=$artist}
<br />
<input type="checkbox" name="artist[]" value="{$artist2.MOVIE_ID}-{$artist2.PERSON_ID}" { in_array array=$item match=$artist2.NAME_SURNAME returnvalue="CHECKED" }>{$artist2.NAME_SURNAME}<br />
<hr />
{/foreach}
<p align="right"> <a style="float: right" href='javascript:void(null);' onclick="deleteData();" ><input type="submit" name="removeArtistFromMovie" onclick="showMessage('Seçilen oyuncu(lar) başarıyla silindi')" value="Seçilenleri Sil" id="value"</p></a>
<br >
</form>
我会在我的js文件中生成类似的复选框:
我试试这个
function deleteData(){
var artistIds = new Array();
$("input[@type=artist[]][@checked]").each(function(){
artistIds.push($(this).attr('id'));
});
alert(artistIds);
$.post('/management/deleteDataAjax2',
{ json: JSON.stringify({'artistIds': artistIds}) },
function(response){
alert("Başarıyla silindi");
window.location.replace(window.location.pathname);
});
}
但是,上面的代码不会选中要检查的复选框的值。为什么?
最后
我认为问题在这里,因为页面没有转到js。
<form name=form1 method=post action=# onsubmit='return validate(this)'>
<br />
<input type="checkbox" name="artist[]" value="{$artist2.MOVIE_ID}-{$artist2.PERSON_ID}" />{$artist2.NAME_SURNAME}<br />
<hr />
{/foreach}
<p align="right">
<a style="float: right" href='javascript:void(null);' onclick="deleteData();" ><br />
<input type="button" name="checkArtistButton" value="Seçilenleri Sil" id="ajaxCheckbox" /></a></p>
<br >
</form>
这是我的js
function deleteData(){
var artistIds = [];
$('#ajaxCheckbox').click(function() {
$("input[name='artist[]']:checked").each(function() {
artistIds.push($(this).attr('value'));
});
alert(artistIds);
});
$.post('/management/deleteDataAjax2',
{ json: JSON.stringify({'artistIds': artistIds}) },
function(response){
alert("Başarıyla silindi");
window.location.replace(window.location.pathname);
});
}
答案 0 :(得分:3)
而不是
$("input[@type=artist[]][@checked]").each(function(){
试
$("input[name='artist[]']:checked").each(function(){
我认为您的意思是获取复选框的价值 - 在查看您的标记时,他们没有id
属性 - 使用.val()
代替attr('id')
来获取值
您现在正在点击锚点设置事件处理程序...更改此
function deleteData() {
var artistIds = [];
$('#ajaxCheckbox').click(function () {
$("input[name='artist[]']:checked").each(function () {
artistIds.push($(this).attr('value'));
});
alert(artistIds);
});
到这个
function deleteData() {
var artistIds = [];
$("input[name='artist[]']:checked").each(function () {
artistIds.push($(this).val());
});
alert(artistIds);
deleteData
函数已被称为onclick
答案 1 :(得分:1)
使用:checked
选择器而不是[@checked]
(顺便说一句,你没有在CSS属性选择器中使用@
)。您还使用了错误的属性选择器作为名称。我也简化了你的代码;您的用例非常适合使用.map(..).get()
var artistIDs = $("input[name='artist[]']:checked").map(function(){
return this.id;
}).get();
答案 2 :(得分:1)
尝试以下代码行:
var artistIds = Array();
$("input[name=artist[]]:checked").each(function(index){
artistIds[index] = $(this).val();
});
这可能对你有用..