我有一个包含多个文本字段和textareas的表单。 当我按下输入时,表格被发送。 我用以下方法解决了这个问题:
$('form').keypress(function (e) {
if (e.keyCode == 13) {
return false;
}
});
但是然后在textarea中按Enter键不会插入换行符。它什么都不做。
然后我尝试了:
$('body').keypress(function (e) {
if (e.keyCode == 13 && e.target.nodeName != 'TEXTAREA') {
return false;
}
});
然后按Enter键发送表单。我不知道如何解决它。我试过这个:
$('textarea').keypress(function (evt) {
if (evt.keyCode == 13) {
var textarea = document.getElementById("ad_text");
textarea.value += "\n";
// I'm guessing you may want this
return false;
}
});
好主意,但换行总是插在最后,而不是在当前的编辑位置。
我尝试的另一件事是:
$.fn.getCursorPosition = function () {
var elem = $(this).get(0);
var pos = 0;
if ('selectionStart' in elem) {
pos = elem.selectionStart;
} else if ('selection' in document) {
elem.focus();
var sel = document.selection.createRange();
var selLength = document.selection.createRange().text.length;
sel.moveStart('character', -elem.value.length);
pos = sel.text.length - selLength;
}
return pos;
}
$.fn.setCursorPosition = function (pos) {
this.each(function (index, elem) {
if (elem.setSelectionRange) {
elem.setSelectionRange(pos, pos);
} else if (elem.createTextRange) {
var range = elem.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
});
return this;
}
$(document).ready(function() {
$('textarea').keypress(function (e) {
if (e.which == 13) {
var pos = $("#ad_text").getCursorPosition();
var valorInput = $("#ad_text").val();
var miValor1=valorInput.substring(pos, pos + 1);
//aqui poner algun if si pos se encuentra al final de la cadena se pone var miValor2= valorInput.replace(miValor1, miValor1 + "\r" )
var miValor2= valorInput.replace(miValor1, "\r" + miValor1 )
$("#ad_text").val(miValor2);
$("#ad_text").setCursorPosition(pos + 1);
return false;
}
});
$('form').keypress(function (e) {
if (e == 13) {
return false;
}
});
$('input').keypress(function (e) {
if (e.which == 13) {
return false;
}
});
});
这很好用,但最终产生文本换行符,它在文本的开头做, 我决定放一些" if"但我什么都想不到。
使用joomla模板: yoo_nite
我已经审核了所有js文件,当我删除文件时,我发现了 uikit.js textarea效果很好,但其他东西不起作用。
另外,当我更改模板时,它可以正常工作。
但这是我开发的模板,我不想改变它。
该网站是 http://alanuncio.com/alanuncioitechno/index.php?option=com_adsmanager&view=edit&Itemid=106
答案 0 :(得分:0)
默认情况下,如果您在textarea中按Enter,则不提交表单。这意味着必须有其他一些脚本来做它。
在您网页的另一部分,您有以下脚本:
jeams(document).keypress(function(e) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if(keycode == 13) {
if(jeams("input#buscador").val() == 'Buscar...') jeams("input#buscador").val('');
jeams('#form_ajaxSearch')[0].submit();
}
});
按下回车键时会提交搜索框,但会检测页面上任意位置的输入键,包括文本区域。
我相信如果您将jeams(document)
更改为jeams("input#buscador")
,则应该解决此问题。
答案 1 :(得分:0)
非常感谢你的帮助。 你已经解决了我的问题。 我找不到一个月,所以你帮助了我很多。 不是因为我不能给你一个声誉投票。 我想因为我是stackoverflow社区的新手。 但是当我去给你的时候。 解决