Reputation: 447
When I put Single quote in text box, it does not show in dynamically added textbox. See following example :
$("#abc").before("<div><input type='text' value='" + $scope.txt + "'/></div>");
http://jsfiddle.net/U3pVM/15777/
Upvotes: 4
Views: 3225
Reputation: 447
I have done this by replacing the single or double Quote by equivalent HTML code.
Upvotes: 0
Reputation: 1629
Try replacing _'_
by <code>&apos;<code>
, or _"_
by <code>&quot;<code>
function TodoCtrl($scope) {
$scope.txt = "";
$scope.addBefore = function() {
$("#abc").before("<div><input type='text' value='" + $scope.txt.replace("'","'") + "'/></div>");
};
}
Upvotes: 0
Reputation: 1643
function TodoCtrl($scope) {
$scope.txt = "";
$scope.addBefore = function() {
$("#abc").before('<div><input type="text" value="' + $scope.txt + '"></div>');
};
}
just change from double to single
http://jsfiddle.net/U3pVM/15784/
Upvotes: 0
Reputation: 960
Try this, I have assumed that you want "text with quote" as an input to be added and displayed without quotes.
function TodoCtrl($scope) {
$scope.txt = "";
$scope.addBefore = function() {
$("#abc").before("<div><input type=\"text\" value=" + $scope.txt + "></div>");
};
}
Upvotes: 0
Reputation: 1074
I've had a similar problem some time ago, and found this answer https://stackoverflow.com/a/9756789/2619170
See the quoteattr function, that's what you need: http://jsfiddle.net/U3pVM/15780/
function quoteattr(s, preserveCR) {
preserveCR = preserveCR ? ' ' : '\n';
return ('' + s) /* Forces the conversion to string. */
.replace(/&/g, '&') /* This MUST be the 1st replacement. */
.replace(/'/g, ''') /* The 4 other predefined entities, required. */
.replace(/"/g, '"')
.replace(/</g, '<')
.replace(/>/g, '>')
/*
You may add other replacements here for HTML only
(but it's not necessary).
Or for XML, only if the named entities are defined in its DTD.
*/
.replace(/\r\n/g, preserveCR) /* Must be before the next replacement. */
.replace(/[\r\n]/g, preserveCR);
;
}
Upvotes: 4