0
我的代碼工作正常,但我真的不能清楚地理解它。ajax重新呈現時獲取新值
有人可以解釋我嗎。
這是我的代碼:
<script type="text/javascript">
var portletNamespace = '#<portlet:namespace/>\\:formId\\:';
$(portletNamespace + 'drpCategory').live('change', function() {
alert('#{myController.simpleString}');
$(portletNamespace + 'hiddenValue').ready(function() {
alert($(portletNamespace + 'hiddenValue').val());
});
});
</script>
<h:inputText id="hiddenValue" value="#{myController.simpleString}" />
<h:selectOneMenu id="drpCategory">
<f:selectItem itemLabel="Chọn thủ tục" itemValue="#{null}" />
<f:selectItems value="#{myController.listCate}" var="item" itemLabel="#{item.cateNane}"
itemValue="#{item.cateId}" />
<f:ajax event="valueChange" render="hiddenMap " listener="#{myController.changeCategory}"
/>
</h:selectOneMenu>
後,我在drpCategory
改項目,JavaScript警告空字符串先的simpleString
真正的價值。但是,如果我刪除第一個警報代碼,第二個將顯示舊值(在由ajax呈現之前)
例如,如果我刪除第一個警報代碼。首先,hiddenValue
爲空,更改爲drpCategory
值,hiddenValue
更改爲'a'
,但javascript alert空,第二次更改drpCategory
時,hiddenValue
更改爲'b'
,但它仍會顯示'a'
。
編輯: 啊,我找到的東西,我已經改爲:
<script type="text/javascript">
var portletNamespace = '#<portlet:namespace/>\\:formId\\:';
$(portletNamespace+'drpCategory').live('change', function(){
setTimeout('myFunc()', 500);
});
function myFunc(){
$(portletNamespace+'hiddenValue').ready(function(){
alert($(portletNamespace+'hiddenValue').val());
});
}
</script>
AK:d非常感謝你非常多,我花了很多的時間來找到解決方案 – user1487380 2012-07-16 06:46:42
不客氣,標記答案接受然後... – Daniel 2012-07-16 07:11:16
嗯,我用jQuery添加文本到,但當驗證失敗我丟失文本,你有什麼辦法來恢復文本驗證失敗後: - ? – user1487380 2012-07-17 04:37:09