2015-09-23 1 views
7

Ersetzen Sie in Jquery das Leerzeichen auf '% 20'. aber in anderen Formen arbeiten, nicht in einer einzigen Form. in besteht Header alsUncaught TypeError: Kann die Eigenschaft 'trim' von undefined in Jquery nicht lesen

<header> 
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /> 
</header> 

der Code in anderer Form funktioniert gut.

var vname = $("#EarningsTypes").val(); 
vname = vname.trim().replace(/ /g, '%20'); 
jQuery.noConflict(); 
+0

VName ist undefined ... es ist nichts drin – Akki619

+0

Kann '# EarningTypes' ele enthalten Frage 'html' bei der Frage? – guest271314

Antwort

11

Sie bekommen Fehler

Uncaught TypeError: Cannot read property 'trim' of undefined in Jquery

das heißt, die Variable vname ist undefined. Um zu verhindern, dass dieser Fehler auftritt, können Sie den ternären Operator verwenden, um den Standardwert der Zeichenfolge als leere Zeichenfolge festzulegen, wenn es undefined ist.

var vname = $("#EarningsTypes").val() == undefined ? '' : $("#EarningsTypes").val().trim(); 
vname = vname.replace(/ /g, '%20'); 

Sie auch || verwenden können, um den Standardwert

var vname = $("#EarningsTypes").val() || ''; 

einstellen Wenn Sie einen älteren Browser verwenden, der nicht trim nicht unterstützt, können Sie verwenden polyfill from MDN

if (!String.prototype.trim) { 
    String.prototype.trim = function() { 
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); 
    }; 
} 
+6

oder verwenden Sie einfach folgendes: 'var vname = $ (" # EarningsTypes "). Val() || "". – Jai

Verwandte Themen