0

我试图动态更新我的 html 并且到目前为止它正在工作以将 textarea 添加到页面但我定义的 onblur 和 onfocus 行为不是由于我认为在 onblur 和 onfocus 上包含双引号特性。我的代码如下:

$('#answerList').append('<li><div class="row"><div class="eight columns"><textarea id="answerText" name="answerText" placeholder="Your answer here..."  onfocus="this.placeholder = """ onblur="this.placeholder = "Your answer here...""></textarea></div><div class="four columns"><input type="checkbox" name="correctCheckbox" id="correctAnswerCheckbox' + answerPosition + '" value="' + answerPosition + '"/><label for="correctAnswerCheckbox' + answerPosition + '">Correct Answer</label></div></div></li>');

通常只对 HTML 进行编码时,我使用以下内容:

<textarea id="questionText" name="questionText" placeholder="Your question here..." onfocus="this.placeholder = ''" onblur="this.placeholder = 'Your question here...'"></textarea>

如何修复 javascript 以使这些属性正常工作

4

4 回答 4

2

""(双引号)无法逃脱 ''(单引号)。但是单引号可以转义双引号。

在您的情况下,我猜您是否仍需要转义在双引号内指定的单引号,然后使用反斜杠()。

<textarea id="questionText" name="questionText" placeholder="Your question here..." onfocus="this.placeholder = \'\'" onblur="this.placeholder =\ 'Your question here...\'"></textarea>

快乐编码:)

于 2013-08-30T13:40:07.687 回答
0

如果我了解您的问题,此字符串可能会对您有所帮助。

'<textarea id="questionText" name="questionText" placeholder="Your question here..." onfocus="this.placeholder = \'\'" onblur="this.placeholder = Your question here..."></textarea>'

小提琴http://jsfiddle.net/aD38E/

于 2013-08-30T13:54:30.947 回答
0

您是正确的,包含连续的双引号是问题所在。简单的解决方法是用反斜杠转义双引号,如下所示:

onfocus="this.placeholder = \"\""

或者

onblur="this.placeholder = \"Your answer here...\""

这是一个有效的 JSFiddle:http: //jsfiddle.net/ud36Y/

于 2013-08-30T13:55:55.840 回答
0

或者您可以使用以下代码:

$('input[type="text"]').focus(function () {
    $(this).data('placeholder', $(this).attr('placeholder'))
        .attr('placeholder', '');
}).blur(function () {
    $(this).attr('placeholder', $(this).data('placeholder'));
});

// $('textarea') or $('input[type="email"]')

于 2016-04-14T16:32:13.740 回答