指定された行にテキストボックスの値があるかどうかを確認するか、最初のテキストボックスのみを確認すると、オブジェクトが返され続けます。行を chkblock 関数に渡し、テキスト ボックスのいずれかに値がある場合は true を取得したいと考えています。
助けてくれてありがとう、ロイ
ここですべてを見ることができます:http://jsbin.com/igaror/1/edit
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
article, aside, figure, footer, header, hgroup,
menu, nav, section { display: block; }
</style>
</head>
<body>
<table>
<tr>
<td><input type="checkbox" /><input id='1' class='name' type='hidden' value='test 1'/></td>
<td><input type="text" class="room" value="44"/></td>
<td><input type="text" class="room" /></td>
<td><input type="text" class="room" /></td>
</tr>
<tr>
<td><input type="checkbox" /><input id='1' class='name' type='hidden' value='test 2'/></td>
<td><input type="text" class="room" /></td>
<td><input type="text" class="room" /></td>
<td><input type="text" class="room" /></td>
</tr>
</table>
</body>
</html>
$('.room').change(function() {
var row = $(this).closest("tr");
var block = false; //row.find(":text.room").val() !== "";
var vname = row.find(":input.name").val();
block = chkblock2(row);
alert("name: " + vname + " block:" + block);
if(vname == "test 1"){
$(this).closest("table").find(":input.name").each(function() {
if ($(this).val() == "test 2"){
var row = $(this).closest('tr');
row.find(":text").attr("disabled",block);
row.find(":text").val("");
}
});
$(this).closest("table").find(":input.name").each(function() {
if ($(this).val() == "test 1"){
$(this).closest("tr").find(":text").attr("disabled",false);
//$(this).val('');
}
});
} else if(vname == "test 2"){
$(this).closest("table").find(":input.name").each(function() {
if ($(this).val() == "test 1"){
var row = $(this).closest('tr');
row.find(":text").attr("disabled",block);
row.find(":text").val("");
}
});
$(this).closest("table").find(":input.name").each(function() {
if ($(this).val() == "test 2"){
$(this).closest("tr").find(":text").attr("disabled",false);
//$(this).val('');
}
});
}
});
function chkblock(row){
return row.find("input:text:not(:empty)");
}
function chkblock2(row){
row.find(":input.room").each(function() {
if ($(this).val() !== "" ){
return true;
}
});
return false;
}