gpt4 book ai didi

javascript - 如何删除 ExtJS 4 中字段的 "name"参数

转载 作者:行者123 更新时间:2023-11-29 18:21:52 26 4
gpt4 key购买 nike

我正在将支付提供商集成到 ExtJS 网站中。

基本上,需要创建一个表单,然后使用 Ajax 将表单字段发送给支付提供商。

问题在于支付提供商不允许表单字段将“名称”参数分配给“”标签。他们对实现进行手动检查并确保它不存在。

我认为这是一种反制措施,用于防止访问者禁用 Ajax 并将表单提交到我的服务器,从而显示信用卡信息。我知道这对 ExtJS 没有任何意义,因为如果没有打开 Javascript,它就无法工作,但无论如何,这是支付提供商的规则。

那么,我怎样才能强制 ExtJS 不在表单字段中放置“名称”参数呢?我试过将“名称:''”放入字段中,但它被忽略了。

我是否使用 ExtJS 中的模板系统来解决这个问题?

最佳答案

所以埃里克是完全正确的,它可以比修改整个模板更容易完成,但至少我会为这种特殊情况使用插件。我做了一个快速的:

Ext.define('Ext.form.field.plugin.NoNameAttribute', {
extend: 'Ext.AbstractPlugin',
alias: 'plugin.nonameattribute',
init: function(cmp) {
Ext.Function.interceptAfterCust(cmp, "getSubTplData", function(data){
delete data['name'];
return data;
});
}
});

注意使用的方法 interceptAfterCust 是我的一个自定义方法,它通过将原始结果作为参数传递给拦截方法来修改现有方法。它还使用给定的原始对象(可以威胁为范围)作为原始方法的范围。最简单的方法是将这些方法添加到 Ext.Function

Ext.Function.interceptAfterCust = function(object, methodName, fn, scope) {
var method = object[methodName] || Ext.emptyFn;

return (object[methodName] = function() {
return fn.call(scope || this, method.apply(object, arguments));
});
}

这是一个working JSFiddle其中第一个字段在 dom 上不会有名称属性,即使它存在于组件中也是如此。

关于javascript - 如何删除 ExtJS 4 中字段的 "name"参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17793712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com