每当有人在 textarea
中按下 enter 键时,我都会调用一个函数。现在我希望在按下 enter 时禁用 new line
或换行。
所以当按下 shift+enter 时,new line
应该可用。在这种情况下,不应该 调用该函数。
这是 jsfiddle 演示: http://jsfiddle.net/bxAe2/14/
每当有人在 textarea
中按下 enter 键时,我都会调用一个函数。现在我希望在按下 enter 时禁用 new line
或换行。
所以当按下 shift+enter 时,new line
应该可用。在这种情况下,不应该 调用该函数。
这是 jsfiddle 演示: http://jsfiddle.net/bxAe2/14/
试一试
$("textarea").keydown(function(e){
// Enter was pressed without shift key
if (e.keyCode == 13 && !e.shiftKey)
{
// prevent default behavior
e.preventDefault();
}
});
将您的fiddle更新为
$(".Post_Description_Text").keydown(function(e){
if (e.keyCode == 13 && !e.shiftKey)
{
// prevent default behavior
e.preventDefault();
//alert("ok");
return false;
}
});
textarea {height:200px; width:200px;overflow:hidden;resize: none;}
index.html
<textarea></textarea>
Script.js
$("textarea").keydown(function(e){
// Enter pressed
if (e.keyCode == 13)
{
//method to prevent from default behaviour
e.preventDefault();
}
});
React: 带有value和onChange事件的textarea
const PreventTextAreaEnter = () => {
const [comment, setComment] = useState();
const handleTextArea = (e) => {
console.log({e}) // Destructure to get a more accurate log
// Return if user presses the enter key
if(e.nativeEvent.inputType === "insertLineBreak") return;
setComment(e.target.value);
};
return (
<>
<textarea value={comment} onChange={ (e) => { handleTextArea(e) } />
</>
)
}
$(".Post_Description_Text").keypress(function(event) {
if (event.which == 13) {
alert("Function is Called on Enter");
event.preventDefault(); //Add this line to your code
}
});
针对Angular用户
虽然已经有现成的解决方案,但如果有人使用Angular遇到这个问题,可以通过以下方式禁用换行:
在你的HTML代码中添加:<textarea ng-trim="false" ng-model='your.model' ...
在你的控制器中添加:
$scope.$watch('your.model', function(newvalue, oldvalue) {
if (newvalue && newvalue.indexOf('\n') > -1) {
$scope.your.model = oldvalue;
}
});
在你的 HTML 中,使用 input
标签而不是 textArea
标签
.preventDefault()
也是有效的。 - mythofechelon