[英]How can I reformat 1 1/2 into pretty fraction HTML using regex and javascript
[英]How can I reformat form input before POST using Javascript (or Rails)?
我的表单中有一个标记为“名称”的字段,其中将包含名字和姓氏。
我们现有的动态服务器(将表单过帐到该动态服务器)需要两个单独的字段(名字,姓氏)。
我可以在表单发布到服务器之前使用Javascript将用户输入分为两个单独的变量吗? 我该怎么做?
您不应尽可能依赖客户端解析。 如果您将此表格发送到您无法修改的应用程序,请使用上述Javascript方法,因为您无法控制它(但为什么不只有名字和姓氏字段)。 但是,如果您是后端应用程序的控制者,请在那里执行所有按摩和数据验证。
仅应使用Javascript来增强UI体验,而不应执行导入数据操作,如果将Javascript用于这些重要任务,则可能既是安全漏洞,也是失败点。
另外,在处理名称时,请记住您将获得的所有不同种类的格式,例如:
John Smith Jr
Dr John Smith
John Smith Esq.
John Smith IV
John A Smith
因此要小心,按摩名字是一件很麻烦的事情,公众至少会输入他们想要的名字,并添加一个小标签,并要求他们仅输入“名字和姓氏”并祈求最好的名字。
对我来说,具有单个字段的原因是为了简化表单,这将获得更高的转换率。
让PHP将名称拆分为名字和姓氏,然后让PHP将表单重新提交给另一台服务器可能有点棘手...
您可以执行以下操作:
var yourForm = document.getElementById('yourFormId');
yourform.onsubmit = new function()
{
var nameBox = document.getElementById('nameBox');
var fname = document.createElement('INPUT');
var lname = document.createElement('INPUT');
fname.type = 'HIDDEN';
lname.type = 'HIDDEN';
fname.name = 'fname';
lname.name = 'lname';
var tokens = nameBox.value.split(' ');
// Note there are a million ways to break this parser, demonstration only
fname.value = tokens[0];
lname.value = tokens[1];
yourForm.appendChild(fname);
yourForm.appendChild(lname);
}
如果需要在客户端进行处理,请使用Javascript split方法解析名称字段值。 然后将这两个名称附加到表单的url或创建几个隐藏字段。
我将在服务器端进行处理,以确保所传递的数据与发布的数据准确无误。 以编程方式分割名称相对容易,但问题是如何定义分隔符。 大多数人都同意在有空格字符的地方将其拆分,但是如果他们输入三个单词的名称(例如Don Juan DiMarco)怎么办? 如果决定根据空格拆分名称,则必须确定如何分配名字和姓氏。
$arrNames = preg_split('/\s+/', $_POST['name']);
上面的代码将给您(在PHP中)一个由空格分隔的值数组。 在字符串Don Juan DiMarco上运行该字符串,将得到一个类似以下的数组:
Array([0] => "Don", [1] => "Juan", [2] => "DiMarco")
从那里,您必须确定哪些是名字,哪些是中间名,哪些是姓氏。 如果输入4或5个名称,难度会更大,这对于某些文化完全是现实的。 所有这些都是猜测,这就是为什么我建议在前端简单地添加一个姓氏输入字段的原因。 这将消除所有关于哪个名称是名字和哪个姓氏的猜测工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.