jQuery Regex替换键上Textarea中的字符串

时间:2018-09-19 12:09:20

标签: jquery regex

我想我真的很亲近。如何获取“ newtitle”变量以匹配“标题”字段中键入的内容?

确切地看到:https://jsfiddle.net/a0cj8xmy

jQuery:

var newtitle = 'This works but isn\'t what I type';
//var newtitle = $('$title-field').text(); // This doesn't work
//var newtitle = $('$title-field').html(); // This doesn't work
//var newtitle = $('$title-field').val(); // This doesn't work

$('#title-field').bind('keyup', function(){
  $('#body-field').html($('#body-field').html().replace(/title=""/g,'title="'+newtitle+'"')); 
});

HTML:

Title:<br>
<input type="text" id="title-field" placeholder="Type here!">

Body:<br>
<textarea id="body-field" name="body[und][0][value]" cols="60" rows="10">
<a href="" title=""><img src="" class="" /></a>
</textarea>

2 个答案:

答案 0 :(得分:1)

您没有使用id选择器#来获取值和在keyup函数内部获取值,而不是在外部,或者只是不使用任何var来实现此直接值

此外,仅当标题为空时,正则表达式才会匹配,因此已对其进行了更改以匹配引号之间的所有字符。

var areaVal=$('#body-field').val();
$('#title-field').keyup(function(){
  if($('#body-field').val().indexOf("<a")==-1)
     $('#body-field').val(areaVal);
   $('#body-field').val($('#body-field').val().replace(/title=".*?"/g,'title="'+$(this).val()+'"'));
 });

答案 1 :(得分:1)

在对@ArunKumar的答案发表评论后,我重构了整个代码。我也剥离了jQuery部分:

const titleField = document.getElementById('title-field'),
  bodyField = document.getElementById('body-field');

titleField.addEventListener('keyup', () => {
  bodyField.value = bodyField.value.replace(/title=".*?"/g, `title="${titleField.value}"`);
})

首先,我保存2个HTML元素以便于使用。然后,添加事件侦听器,并在侦听器内部,通过替换relevent部分来更改textArea元素的值。

现在,您可以根据需要编辑textArea内部文本,并且仍然可以更改title属性(或所有title属性,因为RegExp具有global标签)。< / p>

编辑:从您的最后一条评论开始,您可以在textArea HTML元素上添加readonly属性,以使其无法手动修改。