Forms Mootools停止表单提交方法
我不想使用Forms Mootools停止表单提交方法,forms,mootools,Forms,Mootools,我不想使用按钮提交表单,而是使用元素。这是由于造型要求。所以我有这个代码: myButton.addEvent('click', function() { document.id('myForm').submit(); }); 但是,我还编写了一个类,它改进并实现了输入和文本区域上的占位符属性: var FDPlaceholderText = new Class({ Implements: Events, initialize: function() {
按钮提交表单,而是使用
元素。这是由于造型要求。所以我有这个代码:
myButton.addEvent('click', function() {
document.id('myForm').submit();
});
但是,我还编写了一个类,它改进并实现了输入
和文本区域
上的占位符
属性:
var FDPlaceholderText = new Class({
Implements: Events,
initialize: function() {
var _self = this;
var forms = document.getElements('form');
forms.each(function(form) { // All forms
var performInit = false;
var i = 0;
var ph = [];
form.getElements('input, textarea').each(function(el) { // Get form inputs and textareas
if (el.getProperty('placeholder') != null) { // Check for placeholder attribute
performInit = true;
ph[i] = _self.initPlaceholder(el); // Assign the placeholder replacement to the elements
}
i ++;
});
if (performInit) {
_self.clearOnSubmit(form, ph);
}
});
},
clearOnSubmit: function(form, ph) {
form.addEvent('submit', function(e) {
ph.each(function(el) {
if (el.value == el.defaultValue) {
el.value = '';
}
});
});
},
initPlaceholder: function(el) {
el.defaultValue = el.getProperty('placeholder');
el.value = el.getProperty('placeholder');
el.addEvents({
'focus': function() {
if (el.value == el.defaultValue) el.value = '';
},
'blur': function() {
if(el.value.clean() == ''){
el.value = el.defaultValue;
}
}
});
return el;
}
});
window.addEvent('domready', function() {
new FDPlaceholderText();
});
如果使用实际的
按钮提交表单,则上面的类非常有用:它侦听提交并清除输入值(如果它们仍然是默认值),从而验证它们基本上是空的
但是,由于我正在通过侦听
标记上的单击事件提交一个表单,因此表单.addEvent('submit',函数(e){
没有被触发
感谢您的帮助。这是因为
submit()
方法不是来自MooTools,而是一个本地方法
也许您可以使用
来满足您的样式要求。这是因为submit()
方法不是来自MooTools,而是本机方法
也许您可以使用
来满足您的样式要求。您可以将单击处理程序更改为fireEvent(),而不是直接调用.submit():
myButton.addEvent('click', function() {
document.id('myForm').fireEvent('submit');
});
记住几件事(或更多)
var supportsPlaceholder=!!('document.createElement('input')中的占位符);
-记住,如果浏览器支持占位符,并且当前执行,则无需执行任何操作!supportsPlaceholder&&el.get('placeholder')&&self.initPlaceholder(el);
-这样可以避免在不需要时检查属性el.get('value')
之类的访问器(对于1.12,它是getProperty)有关如何在mootools中处理此问题的更复杂示例,请参见此处的my repo:您可以将单击处理程序更改为fireEvent(),而不是直接调用.submit():
myButton.addEvent('click', function() {
document.id('myForm').fireEvent('submit');
});
记住几件事(或更多)
var supportsPlaceholder=!!('document.createElement('input')中的占位符);
-记住,如果浏览器支持占位符,并且当前执行,则无需执行任何操作!supportsPlaceholder&&el.get('placeholder')&&self.initPlaceholder(el);
-这样可以避免在不需要时检查属性el.get('value')
之类的访问器(对于1.12,它是getProperty)有关如何在mootools中处理此问题的更复杂示例,请参见此处的my repo:谢谢您的提示。关于第2点,我发现如果在支持占位符的浏览器中输入空格,占位符将不会返回,这就是我覆盖本机支持的原因。这很好-您的验证层需要分离在mootools中,您可以执行
el.set('value',el.get('value').trim().stripScripts())
以正常化。修剪后的空字符串将恢复为原始占位符-如果您有任何自定义占位符,请确保还.fireEvent('change')
fireEvent('submit')
不会提交表单,只需运行MooTools绑定的侦听器,对吗?感谢您提供的提示。关于第2点,我发现如果在支持占位符的浏览器中输入空格,占位符将不会返回,这就是我覆盖本机支持的原因。这很好-您的验证层需要是单独的,并且在m中ootools,您可以执行el.set('value',el.get('value').trim().stripScripts())
以正常化。修剪后的空字符串将恢复为原始占位符-如果您有任何自定义占位符,请确保还.fireEvent('change')
fireEvent('submit')
不会提交表单,只是运行MooTools绑定的侦听器,对吗?