Должно быть простым, но я не могу это решить.
У меня есть страница со столом, внутри этой таблицы есть автозаполнение и кнопка, я хочу найти автозаполнение, когда я нажимаю кнопку и блокирую ее или включаю. Часть disable/enabled не проблема, я не могу заставить ее пересечь иерархию, чтобы найти автозаполнение в первую очередь. Вот кусок html, который у меня есть: -
<td colspan="3">
<fieldset class="buttons">
<div>
<input class='required' style='width:400px' type='text' id='autoLook[0]' name='autoLook[0].id' value='' title='' />
<div class='searchcontainer yui-skin-sam' id='abb890644f19d382ef69951344848d878'></div>
<script type='text/javascript'> var autoCompleteDataSource = new YAHOO.util.XHRDataSource("/FARTFramework/form/searchAJAX");
autoCompleteDataSource.responseType = YAHOO.util.XHRDataSource.TYPE_XML;
autoCompleteDataSource.responseSchema = {
resultNode : "result",
fields : [
{ key: "name" },
{ key: "id" }
]
};
;
autoComplete = new YAHOO.widget.AutoComplete('autoLook[0]','abb890644f19d382ef69951344848d878', autoCompleteDataSource);
autoComplete.queryDelay = 0;
autoComplete.prehighlightClassName = 'yui-ac-prehighlight';
autoComplete.useShadow = false;
autoComplete.minQueryLength = 3;
autoComplete.typeAhead = false;
autoComplete.forceSelection = true;
autoComplete.maxResultsDisplayed = 20;
autoComplete.shadow = false;
var itemSelectHandler = function(sType, args) {
var autoCompleteInstance = args[0];
var selectedItem = args[1];
var data = args[2];
var id = data[1];
updateHiddenInput(id, 0, 'forms') };
autoComplete.itemSelectEvent.subscribe(itemSelectHandler);
</script>
</div>
<input type="button" id="EnableDisable" value="Edit" onclick="enabledisable($(this))" />
<input type="hidden" class="required" id="forms[0]" name="forms[0].id" value="" />
<input type="hidden" class="required" id="oldvalue[0]" name="oldvalue[0].id" value="" />
<input type="button" value="Remove Form" onclick="globalRemoveRow($(this),'forms')" />
<input type="button" value="Insert New Form Above" onclick="addRowWithin('/FARTFramework/testScenario/ajaxNewFormFragment',$(this))" />
<input type="button" value="Go to Form Definition" onclick="gotoNew('/FARTFramework/form/edit/',$(this))" />
</fieldset>
<div id="hideDIV">
<table name="formSubTable[0]" id="formSubTable[0]">
</table>
</div>
</td>
Кнопка, которую я нажимаю, называется "EnableDisable", и в javascript я могу это сделать:
function enabledisable(theButton){
$thebutton = $(theButton)
$theInput = $thebutton.closest('td')
var myValue = $theInput.html();
alert(myValue)
}
Что возвращает это:
<fieldset class="buttons">
<div class="yui-ac">
<input required="required" autocomplete="off" class="required yui-ac-input" style="width:400px" id="autoLook[0]" name="autoLook[0].id" value="" title="" type="text">
<div class="searchcontainer yui-skin-sam yui-ac-container" id="af745a9597adf2dd98aeab126bc31bcb9"><div style="display: none;" class="yui-ac-content"><div style="display: none;" class="yui-ac-hd"></div><div class="yui-ac-bd"><ul><li style="display: none;"></li><li style="display: none;"></li><li style="display: none;"></li><li style="display: none;"></li><li style="display: none;"></li><li style="display: none;"></li><li style="display: none;"></li><li style="display: none;"></li><li style="display: none;"></li><li style="display: none;"></li></ul></div><div style="display: none;" class="yui-ac-ft"></div></div></div>
<script type="text/javascript"> var autoCompleteDataSource = new YAHOO.util.XHRDataSource("/FARTFramework/form/searchAJAX");
autoCompleteDataSource.responseType = YAHOO.util.XHRDataSource.TYPE_XML;
autoCompleteDataSource.responseSchema = {
resultNode : "result",
fields : [
{ key: "name" },
{ key: "id" }
]
};
Я вижу, что вход, который я хочу, является третьей строкой вниз, первый вход в этом html. Но когда я пытаюсь расширить jquery до $thebutton.closest('td').children('input').eq(0)
Я получаю undefined
возвращенный.
Я пробовал все сначала, потом и так далее, но не повезло. Я знаю, что вход будет иметь текст autolook [xx] в нем, но будут грузы с этим идентификатором, и я не могу сказать, какой номер будет просто искать определенный идентификатор или имя, поэтому нужно пройти html до Найди это...
Попробуйте использовать .find()
$thebutton.closest('td').find('input[type='text'])
Или
$thebutton.closest('td').find('input')
Или
$thebutton.closest('td').find('input:first')
попробуйте изменить это:
function enabledisable(theButton){
$thebutton = $(theButton)
$theInput = $thebutton.closest('td')
var myValue = $theInput.html();
alert(myValue)
}
к этому:
$('#EnableDisable').click(function(){
var myValue = $(this).closest('td').find('input').val();
alert(myValue)
});
и ваш html изменился:
<input type="button" id="EnableDisable" value="Edit" />