Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- file: index.php
- <head>
- <script src="jquery.js" type="text/javascript"></script>
- <script src="script.js" type="text/javascript"></script>
- </head>
- <input placeholder="Search" type="text" id="termSearch" name="termSearch" />
- <input placeholder="Replace" type="text" id="termReplace" name="termReplace" />
- <label for="caseSensitive">Case Sensitive</label><input type="checkbox" name="caseSensitive" id="caseSensitive" />
- <a href="#" onclick="SAR.find(); return false;" id="find"><input type="submit" value="Find"></a>
- <a href="#" onclick="SAR.findAndReplace(); return false;" id="findAndReplace"><input type="submit" value="Find & Replace"></a>
- <a href="#" onclick="SAR.replaceAll(); return false;" id="replaceAll"><input type="submit" value="Replace All"></a>
- ******** This is the function I would like to add************
- <a href="#" onclick="SAR.save(); return false;"><input type="submit" value="Save changes"></a>
- **************************************************************
- <textarea id="txtArea" rows="26"><?php echo $todisplay; ?></textarea>
- file: script.js
- var SAR = {};
- SAR.find = function(){
- // collect variables
- var txt = $("#txtArea").val();
- var strSearchTerm = $("#termSearch").val();
- var isCaseSensitive = ($("#caseSensitive").attr('checked') == 'checked') ? true : false;
- // make text lowercase if search is supposed to be case insensitive
- if(isCaseSensitive == false){
- txt = txt.toLowerCase();
- strSearchTerm = strSearchTerm.toLowerCase();
- }
- // find next index of searchterm, starting from current cursor position
- var cursorPos = ($("#txtArea").getCursorPosEnd());
- var termPos = txt.indexOf(strSearchTerm, cursorPos);
- // if found, select it
- if(termPos != -1){
- $("#txtArea").selectRange(termPos, termPos+strSearchTerm.length);
- }else{
- // not found from cursor pos, so start from beginning
- termPos = txt.indexOf(strSearchTerm);
- if(termPos != -1){
- $("#txtArea").selectRange(termPos, termPos+strSearchTerm.length);
- }else{
- alert("not found");
- }
- }
- };
- SAR.findAndReplace = function(){
- // collect variables
- var origTxt = $("#txtArea").val(); // needed for text replacement
- var txt = $("#txtArea").val(); // duplicate needed for case insensitive search
- var strSearchTerm = $("#termSearch").val();
- var strReplaceWith = $("#termReplace").val();
- var isCaseSensitive = ($("#caseSensitive").attr('checked') == 'checked') ? true : false;
- var termPos;
- // make text lowercase if search is supposed to be case insensitive
- if(isCaseSensitive == false){
- txt = txt.toLowerCase();
- strSearchTerm = strSearchTerm.toLowerCase();
- }
- // find next index of searchterm, starting from current cursor position
- var cursorPos = ($("#txtArea").getCursorPosEnd());
- var termPos = txt.indexOf(strSearchTerm, cursorPos);
- var newText = '';
- // if found, replace it, then select it
- if(termPos != -1){
- newText = origTxt.substring(0, termPos) + strReplaceWith + origTxt.substring(termPos+strSearchTerm.length, origTxt.length)
- $("#txtArea").val(newText);
- $("#txtArea").selectRange(termPos, termPos+strReplaceWith.length);
- }else{
- // not found from cursor pos, so start from beginning
- termPos = txt.indexOf(strSearchTerm);
- if(termPos != -1){
- newText = origTxt.substring(0, termPos) + strReplaceWith + origTxt.substring(termPos+strSearchTerm.length, origTxt.length)
- $("#txtArea").val(newText);
- $("#txtArea").selectRange(termPos, termPos+strReplaceWith.length);
- }else{
- alert("not found");
- }
- }
- };
- SAR.replaceAll = function(){
- // collect variables
- var origTxt = $("#txtArea").val(); // needed for text replacement
- var txt = $("#txtArea").val(); // duplicate needed for case insensitive search
- var strSearchTerm = $("#termSearch").val();
- var strReplaceWith = $("#termReplace").val();
- var isCaseSensitive = ($("#caseSensitive").attr('checked') == 'checked') ? true : false;
- // make text lowercase if search is supposed to be case insensitive
- if(isCaseSensitive == false){
- txt = txt.toLowerCase();
- strSearchTerm = strSearchTerm.toLowerCase();
- }
- // find all occurances of search string
- var matches = [];
- var pos = txt.indexOf(strSearchTerm);
- while(pos > -1) {
- matches.push(pos);
- pos = txt.indexOf(strSearchTerm, pos+1);
- }
- for (var match in matches){
- SAR.findAndReplace();
- }
- };
- /* TWO UTILITY FUNCTIONS YOU WILL NEED */
- $.fn.selectRange = function(start, end) {
- return this.each(function() {
- if(this.setSelectionRange) {
- this.focus();
- this.setSelectionRange(start, end);
- } else if(this.createTextRange) {
- var range = this.createTextRange();
- range.collapse(true);
- range.moveEnd('character', end);
- range.moveStart('character', start);
- range.select();
- }
- });
- };
- $.fn.getCursorPosEnd = function() {
- var pos = 0;
- var input = this.get(0);
- // IE Support
- if (document.selection) {
- input.focus();
- var sel = document.selection.createRange();
- pos = sel.text.length;
- }
- // Firefox support
- else if (input.selectionStart || input.selectionStart == '0')
- pos = input.selectionEnd;
- return pos;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement