tedbyers Posted April 26, 2012 Share Posted April 26, 2012 Here is the context. I have a number of forms that have optional fields, and inthe DB these are represented by empty strings. Here is a very short example of a Javascript function I use to autopopulate a form when a user clicks on a row in a table: function getProcessorRow(t) { var col=t.cellIndex; var row=t.parentNode.rowIndex; var procTable = document.getElementById(\"processortable\"); var StrippedString = (procTable.rows[row].cells[1].innerHTML); StrippedString = StrippedString.replace(/(<([^>]+)>)/ig,\"\"); document.pform.bname.value = StrippedString; StrippedString = (procTable.rows[row].cells[0].innerHTML); StrippedString = StrippedString.replace(/(<([^>]+)>)/ig,\"\"); document.pform.pid.value = StrippedString; StrippedString = (procTable.rows[row].cells[2].innerHTML); StrippedString = StrippedString.replace(/(<([^>]+)>)/ig,\"\"); document.pform.sname.value = StrippedString; StrippedString = (procTable.rows[row].cells[3].innerHTML); StrippedString = StrippedString.replace(/(<([^>]+)>)/ig,\"\"); document.pform.tz.value = StrippedString; StrippedString = (procTable.rows[row].cells[4].innerHTML); StrippedString = StrippedString.replace(/(<([^>]+)>)/ig,\"\"); var bgt = StrippedString; if (bgt == 'Bank') { document.pform.bank_type.checked = true; } else { document.pform.gateway_type.checked = true; } document.pform.processorsave.value = 'Update Data'; } What is presently happening is that when this function is executed, and the cell in the table has an empty string (or so it looks to me), The form's corresponding field actually displays the string ' ' when in fact it ought to remain or become (depending on the value it had before the click event) empty. NB: I am using flexigrid, and it puts odd html markup in the table's cells, and that is what the regex applied to StrippedString is designed to remove. But I am at a loss as to how to prevent these auto-population functions from displaying this non-breaking space markup when it ought to display nothing. Please help. Maybe I am missing the obvious, but this is driving me insane. :-( In Perl it wouldn't be an issue (that's where I learned regex, BTW), and maybe I am too tired to see it, but I'd appreciate it if someone would be kind enough to show me my mistake. Thanks Ted Link to comment Share on other sites More sharing options...
justsomeguy Posted April 26, 2012 Share Posted April 26, 2012 You'll have to remove the " " manually, you can't remove it using trim or something like that. It's a high-level UTF character, different codes depending on the browser, which just renders as a blank space. The innerHTML property should include the string " ", so you'll need to search for that and remove it. Link to comment Share on other sites More sharing options...
tedbyers Posted April 26, 2012 Author Share Posted April 26, 2012 Thanks, That is much as I'd expected, but then, how do I modify the following statement to do it: StrippedString = StrippedString.replace(/ /ig,""); This was one of the first things I'd tried, but it doesn't work. My guess is that the UTF encoding is messing up the regex I tried to use. Can I even do this reliably using regex? NB: This is strictly a client side problem and everything is all ASCII on the server side. I expect I'll have to deal with i18n at some point, but I want to have the core functionality all working before dealing with i18n. Link to comment Share on other sites More sharing options...
Ingolme Posted April 26, 2012 Share Posted April 26, 2012 Find the unicode value of the non-breaking space and put it in the regular expression as \uxxxx Link to comment Share on other sites More sharing options...
tedbyers Posted April 26, 2012 Author Share Posted April 26, 2012 OK, I looked up non-breaking spaces on Wikipedia, and added the following to my code: StrippedString = StrippedString.replace(/\U+00A0/ig,"");StrippedString = StrippedString.replace(/\U00A0/ig,"");StrippedString = StrippedString.replace(/0xC2/ig,"");StrippedString = StrippedString.replace(/0xA0/ig,""); But that was to no avail. There must be something more than just the UTF code for a non-breaking space at work, unless the codes I found for non-breaking spaces are incorrect (in which case, the wiki page needs to be fixed). Link to comment Share on other sites More sharing options...
Err Posted April 26, 2012 Share Posted April 26, 2012 (edited) Edit: Never mind, I see that you've tried it. Edited April 26, 2012 by Err Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now