我想我真的很亲近。如何获取“ 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>
答案 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
属性,以使其无法手动修改。