#jquery #ajax #json #codeigniter #radio-button
#jQuery #ajax #json #CodeIgniter #переключатель
Вопрос:
Я хотел, чтобы переключатель проверялся при нажатии на его конкретную строку, но он не работает. Я подозреваю, что проблема с селектором jquery связана с сгенерированной таблицей ajax / json. Это мой список кода. Я новичок в StackOverflow.
<html>
<head>
<script type="text/javascript" src="<?php echo base_url();?>js/jquery-1.6.1.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.selected td { background-color: #FF0000; }
-->
</style>
</head>
<body>
<div id="search_form">
<form id="form1" name="form1" method="post" action="">
<table width="80%" border="1" align="center" cellspacing="0">
<tr>
<td><label>
<div align="center">
<p>
<input name="search_input" type="text" id="search_input" value="ASET" size="50" />
</p>
</div>
</label></td>
<td width="10%" rowspan="2"><div align="center" id="btn_search">Search</div></td>
</tr>
<tr>
<td><label>
<div align="center">
<input name="rb_searchType" type="radio" id="cb_searchType" value="fileno" checked="checked" />
File No
<input type="radio" name="rb_searchType" id="cb_searchType2" value="filetitle" />
Title</div>
</label></td>
</tr>
</table>
<div align="center"></div>
<div align="center"></div>
</form>
</div>
<div id="status_submit">
</div>
<div id="search_result1">
</div>
</body>
<script type="text/javascript">
$(document).ready(function() {
$('#btn_search').click(function() {
$('#form1').submit();
});
$("form").submit(function() {
var fSearchInputValue = $('#search_input').attr('value');
var fSearchType = $("input[@name='rb_searchType']:checked").val();
$('#status_submit').html("please wait......");
$.ajax({
type: "POST",
url: "<?php echo site_url('files/search_list_file_json/'); ?>" "/",
data: "SearchInputValue=" fSearchInputValue "amp; SearchType=" fSearchType,
dataType: "json",
success: function(data) {
var contentHtml = '<table width="100%" border="1" cellpadding="2" cellspacing="0" bordercolor="#000000" id="Table"><tr><td width="5%">amp;nbsp;</td><td width="15%">FILE NOamp;nbsp;</td><td>SUBJECTamp;nbsp;</td></tr>';
$(data).each(function(index, item) {
contentHtml = '<tr><td><input type="radio" name="rb_fileno" id="rb_fileno" value="';
contentHtml = item.FileNo;
contentHtml = '" />amp;nbsp;</td>';
contentHtml = '<td>';
contentHtml = item.FileTitle;
contentHtml = 'amp;nbsp;</td></tr>';
});
contentHtml = "</table>";
$('#search_result1').html(contentHtml);
$('#status_submit').fadeIn(function(){$('#status_submit').html('');});
},
error: function(){
var contentHtml='No result';
$('#status_submit').fadeIn(function(){$('#status_submit').html(contentHtml);});
}
});
return false;
}); //end ajax json
//check radio button when row is clicked
$('#search_result1s tr').click(function(event) {
// $(data).filter('div.search_result1 tr').click(function(event) {
$(this).find('td input:radio').prop('checked', true);
$(this).addClass("selected").siblings().removeClass("selected");
});
}); // end document.ready
</script>
</html>
Спасибо
Ответ №1:
Попробуйте это
$('#search_result1s tr').live('click',function(event) {
$(this).find('td :input[type=radio]').attr({'checked':'checked'});
...
});
по сути, метод .live() работает аналогично .click(), разница только в том, что когда вы динамически добавляете html-элемент в тело, это означает, что после загрузки страницы .live() выполняется успешно, но метод .click() завершается неудачей.
Ответ №2:
для меня это похоже на опечатку. не следует
$('#search_result1s tr').click(function(event)
быть
$('#search_result1 tr').click(function(event)