作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的代码如下,
<a4j:commandLink oncomplete="openSignatureModel();" id="requestText" reRender="sigPassword" title="Send Prescription"
actionListener="#{patientNotePresBackingBean.sendPrescriptionId}"
onclick="return pharmacyCheck('#{row}');">
<f:param name="sendPrescriptionId" value="#{patientNotePrescriptionVar.id}" />
<f:param name="processOfPrescription" value="Send" />
<h:graphicImage value="/images/send-prescribe.png" style="border:0;"></h:graphicImage>
</a4j:commandLink>
我的 java 脚本就像...
function pharmacyCheck(rowID) {
var a = document.getElementById("prescriptionId:patientNotePresListId:"+rowID+":pharmacyRcopiaId");
if(a.value == -1) {
alert("Please select Pharmacy");
return false;
} else {
return true;
}
}
实际上,当它返回 true 时,它应该调用 patientNotePresBackingBean.sendPrescriptionId 对吗?
但调用方式不一样....有什么原因吗?
最佳答案
当您看到生成的 HTML 时,按钮/链接的 onclick 方法中会出现类似这样的内容:
onclick="return pharmacyCheck('#{row}');;A4J.AJAX.Submit(..."
所以onclick是一开始就返回,ajax提交不会发送。要解决您的问题,请以这种方式使用您的 javascript 方法:
<a4j:commandLink onclick="if (!pharmacyCheck('#{row}')) return false;" ...>
编辑:进一步解释:
当你有这样一段 JavaScript 代码时:
function X() {
return false;
alert("this alert won't be shown =(");
}
如前所述,警报永远不会触发。因此,检查生成的 HTML 是否有 onclick(特别格式化以查看相似之处):
onclick="
return functionX();
alert('this alert will not display either X_x');
A4J.AJAX.Submit(...
"
onclick 代码不会触发,因为您在执行代码之前返回了一些东西。更改只会拦截 false
值并返回,如果您的方法返回 true
,将执行其余代码。
注意:默认情况下,任何不返回任何内容的 javascript 方法都会返回 false。
关于java - a4j :commandLink with onClick return true or false not properly working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11454683/
我是一名优秀的程序员,十分优秀!