我有一个带有条件字段的表单,只有当用户选择“other”的单选按钮时才会显示该字段。如果我删除这个字段上的条件,我原来的javascript函数可以工作;但是,使用条件我不能让它正确地触发。
表单有一个事件"cf.add“,它在条件字段可见时触发,使用这个jquery,我在控制台中得到了正确的响应:
jQuery( document ).on( 'cf.add', function(){
console.log('cf.add triggered' );
});
如果我删除条件,以便在呈现页面时呈现该字段,我将在该字段中获得正确的响应,即添加一个'$':
$("#fld_3169487_4").on("blur", handleChange);
function handleChange() {
var myValue = document.getElementById("fld_3169487_4").value;
if (myValue.indexOf("$") != 0)
{
myValue = "$" + myValue;
}
document.getElementById("fld_3169487_4").value = myValue;
}
我试着将第二个函数放在第一个函数中,但没有成功。当我尝试组合这两者时,我觉得我添加它们的顺序不正确,但我不确定我做错了什么。
我还尝试在'cf.add‘触发器上调用函数handleChange(),但对我来说也不起作用。
发布于 2018-09-15 05:27:35
在玩了一段时间后,我想通了:
jQuery( document ).on( 'cf.add', function(){
var otherField = $("#fld_3169487_3");
otherField.focus();
var dollarValue;
$(otherField).on("blur", function() {
dollarValue = otherField.val();
if (dollarValue.indexOf("$") != 0) {
dollarValue = "$ " + dollarValue;
}
$(otherField).val(dollarValue);
});
});
发布于 2018-09-14 03:35:59
由于cf.add
是由表单发布的自定义元素,因此您可以让其他元素订阅事件:
$("#fld_3169487_4").on('cf.add', function(event){
if ($(this).val().indexOf("$") != 0)
{
$(this).val("$" + $(this).val());
}
});
使用$(this)
,我们可以只针对事件所附加的字段。此外,可以通过event
参数将来自事件发布服务器的数据传递给订阅服务器。
https://stackoverflow.com/questions/52320478
复制相似问题