2014-11-13 61 views
1

我有一個包含多個文本字段和textareas的表單。 當我按下輸入表格發送。 我已經解決了這個有:按enter鍵插入textarea中的換行符,但不提交表格

$('form').keypress(function (e) { 
    if (e.keyCode == 13) { 
     return false; 
    } 
}); 

但隨後按下textarea的輸入不插入一個換行符。它什麼也沒做。

然後我嘗試:

$('body').keypress(function (e) { 
    if (e.keyCode == 13 && e.target.nodeName != 'TEXTAREA') { 
     return false; 
    } 
}); 

然後形式按enter發送。我不知道如何解決它。我試過這個:

$('textarea').keypress(function (evt) { 
    if (evt.keyCode == 13) { 
     var textarea = document.getElementById("ad_text"); 
     textarea.value += "\n"; 
     // I'm guessing you may want this 
     return false; 
    } 
}); 

好主意,但換行總是插在最後,而不是在當前的編輯位置。

我想另一件事是:

$.fn.getCursorPosition = function() { 
    var elem = $(this).get(0); 
    var pos = 0; 
    if ('selectionStart' in elem) { 
     pos = elem.selectionStart; 
    } else if ('selection' in document) { 
     elem.focus(); 
     var sel = document.selection.createRange(); 
     var selLength = document.selection.createRange().text.length; 
     sel.moveStart('character', -elem.value.length); 
     pos = sel.text.length - selLength; 
    } 
    return pos; 
} 
$.fn.setCursorPosition = function (pos) { 
    this.each(function (index, elem) { 
     if (elem.setSelectionRange) { 
      elem.setSelectionRange(pos, pos); 
     } else if (elem.createTextRange) { 
      var range = elem.createTextRange(); 
      range.collapse(true); 
      range.moveEnd('character', pos); 
      range.moveStart('character', pos); 
      range.select(); 
     } 
    }); 
    return this; 
} 
$(document).ready(function() { 

    $('textarea').keypress(function (e) { 
     if (e.which == 13) { 
      var pos = $("#ad_text").getCursorPosition(); 
      var valorInput = $("#ad_text").val(); 
      var miValor1=valorInput.substring(pos, pos + 1); 
      //aqui poner algun if si pos se encuentra al final de la cadena se pone var miValor2= valorInput.replace(miValor1, miValor1 + "\r") 

      var miValor2= valorInput.replace(miValor1, "\r" + miValor1 ) 

      $("#ad_text").val(miValor2); 
      $("#ad_text").setCursorPosition(pos + 1); 

      return false; 
     } 
    }); 
    $('form').keypress(function (e) { 
     if (e == 13) { 
      return false; 
     } 
    }); 

    $('input').keypress(function (e) { 
     if (e.which == 13) { 
      return false; 
     } 
    }); 

}); 

這工作得很好,但最終產生的文本換行,但它在文本的開頭, 我決定把一些「如果」,但我可以沒有想到任何事情。

使用Joomla模板: yoo_nite

而且我查看了所有的JS文件,我發現,當我刪除的文件 uikit.js textarea的效果很好,但是其他事情不工作。

此外,當我更改模板它工作正常。

但是,這是我開發的模板,我不想改變它。

該網站是 http://alanuncio.com/alanuncioitechno/index.php?option=com_adsmanager&view=edit&Itemid=106

+0

我說讓表單提交,如果你按下回車鍵,或設置一個不同的默認按鈕。你試圖打破網絡設計的工作方式。 – ps2goat

回答

0

默認情況下,如果按一個文本輸入,它提交表單。這意味着必須有一些其他腳本在做它。

在你的頁面的另一部分則有以下腳本:

jeams(document).keypress(function(e) { 
    var keycode = (e.keyCode ? e.keyCode : e.which); 
    if(keycode == 13) { 
     if(jeams("input#buscador").val() == 'Buscar...') jeams("input#buscador").val(''); 
     jeams('#form_ajaxSearch')[0].submit(); 
    } 
}); 

它提交當輸入鍵被按下的搜索框,但它檢測在該網頁上的回車鍵,包括文本區域。

我相信,如果你將jeams(document)更改爲jeams("input#buscador")它應該解決這個問題。

0

非常感謝您的幫助。 你已經解決了我的問題。 我找不到一個月,所以你幫了我很多。 不是因爲我不能給你聲望投票。 我覺得因爲我是新來的stackoverflow社區。 但是,當我去給你。 求助

相關問題