動態內容,我寫這使得一個<input>
當 文本鍵入它發送一個Ajax請求到服務器自動完成JSF自定義組件。結果顯示爲 ,作爲<select>
與<option>
標籤。更改事件不觸發對jQuery模態窗口和Chrome瀏覽器
如果我有<custom:autocomplete id="findTeam"/>
組件將呈現結構 這樣的:
<span id="findTeam>
<input id="findTeam_input"/>
<select id="findTeam_listbox">
<option ...>
</select>
</span>
我使用jQuery的<select>
讓我知道當一個條目 被從列表中選擇更改事件綁定。這通常工作正常,但當我在使用 鉻瀏覽器(v15.0.874.106 m)時,在jquery ui 1.8.16模式對話框中使用組件時,更改事件不是 。如果對話框不是模態的,它就可以正常工作,並且在IE8 中,它可以與模態對話框一起工作。所以當<select>
被渲染時,我點擊 其中一個選項,沒有任何反應 - 它仍然顯示,但我不能選擇任何東西。
我在js控制檯中看不到任何錯誤,我不確定接下來要嘗試什麼。這裏 是來自服務器的Ajax響應的一個示例:使用.live(),而不是.bind()
<?xml version='1.0' encoding='UTF-8'?>
<partial-response>
<changes>
<update id="findTeam">
<![CDATA[
<script>
jQuery(function($){
com.corejsf.ajaxSetup("mojarra.ab('findTeam',event,'change',0,'addButton')");
$('#findTeam').hover(com.corejsf.compFocusSet,com.corejsf.compFocusClear);
});
</script>
<span id="findTeam">
<input id="findTeam_input" type="text" name="findTeam_input" autocomplete="off" value="tea" />
<script>
jQuery(function($){
$('#findTeam_input').bind('keydown','#findTeam_listbox',com.corejsf.inputKeydown);
$('#findTeam_input').bind('blur','#findTeam',com.corejsf.compBlur);
$('#findTeam_input').bind('keyup',{id:'#findTeam',minChars:3},com.corejsf.inputKeyup);
$('#findTeam_input').bind('mousedown','#findTeam',com.corejsf.inputClick);var cid='#findTeam_input';
$(cid).focus().focus().click();$(cid).val($(cid).val());
});
</script>
<select id="findTeam_listbox" name="findTeam_listbox" size="10" style="position: absolute">
<option value="cfdb36cd-ebfa-49b9-941e-2a74d7b82aef">Team 5</option>
<option value="a206fbbc-552d-4b7b-b2d3-dc1a50f98667">Team 6</option>
<option value="bc5f9f1d-ef76-452f-9101-bff703efbf38">Team 7</option>
<option value="2a43ff65-d170-45a7-9bf0-ec237d51603d">Team 8</option>
<option value="7112ca7d-75ea-4957-a830-7ef7b54e18f5">Team 9</option>
</select>
<script>
jQuery(function($){
$('#findTeam_listbox').position({my:'left top',at:'left bottom',of:$('#findTeam_input'),collision:'fit'});
$('#findTeam_listbox').dropShadow({left:4,top:4,blur:1});
$('#findTeam_listbox').bind('change',com.corejsf.listClick);
$('#findTeam_listbox').bind('blur','#findTeam',com.corejsf.compBlur);
});
</script>
</span>
]]>
</update>
<update id="javax.faces.ViewState">
<![CDATA[8331589387080754551:-7156357472895110486]]>
</update>
</changes>
</partial-response>
我試過,但是這並不能幫助,這會是一些 某種安全限制在鉻?感謝您的任何建議。
我已經嘗試在dialogopen事件處理程序中重新綁定,但仍然沒有任何反應。我已經在dialogopen處理程序(正在調用中)和listClick()處理程序(不是)中放入警報。有任何想法嗎?當我考慮它時,只有當某些文本輸入到輸入中並且某些結果從服務器返回時,對話框纔會打開,findTeam_listbox不存在。在選擇標記被呈現後,更改事件被綁定。感謝您的答覆。 – Oversteer