2017-04-26 3 views
0

Ich habe einen versteckten Eingang auf meiner Seite wie folgt:Entfernen Teil des Wertes einer Formulareingabe mit jQuery/JavaScript

<input type="hidden" name="required" value="name,town,tel,email"> 

Da den Menschen in ihm assoziierter Form, bestimmen andere Felder möglicherweise erforderlich (dh Staat füllen wird erforderlich wenn Sie "USA" aus einem Dropdown-Menü auswählen.

Ich habe zwei Funktionen, eine mit dem Namen addToRequiredFields() und eine mit dem Namen removeFromRequiredFields() die Feuer als USA ist ausgewählt/deaktiviert, aber die Entfernung scheint nicht zu arbeiten, und ich kann nicht herausfinden, warum.

function addToRequiredFields(string) { 
    var required = $('input[name=required]').val(); 
    required += ',' + string; 
    $('input[name=required]').val(required); 
} 

function removeFromRequiredFields(string) { 
    var required = $('input[name=required]').val(); 
    required.replace(',' + string, ''); 
    $('input[name=required]').val(required); 
} 

Die Funktion wird unter .on('change') des Dropdown-Menüs Auswählen aufgerufen.

+0

hast du 'required = required.replace ('' + String versuchen, ");' statt nur 'required.replace (',' + string, '');' –

+0

Haha wow, war es so einfach! Danke, Mohamed. Ich nehme nicht an, dass Sie mir helfen könnten, jede Instanz der Saite zu ersetzen, nicht nur eine, oder? – mpdc

+1

BTW: 'replace (',' + string, '')' funktioniert nicht, wenn 'string' am Anfang steht – hindmost

Antwort

0

Obwohl es keine richtige Methode ist, um Steuerelemente basierend auf dem Eingabewert zu validieren, habe ich ein Skript für Sie erstellt.

function addToRequiredFields(string) { 
 
    var required = $('input[name=required]').val(); 
 
    fieldsArray = required.split(",") 
 
    fieldsArray.push(string) 
 
    $('input[name=required]').val(fieldsArray.join()); 
 
} 
 

 
function removeFromRequiredFields(string) { 
 
    var required = $('input[name=required]').val(); 
 
    fieldsArray = required.split(",") 
 
    fieldsArray = fieldsArray.filter(function(item) { 
 
    return item !== string 
 
}) 
 
    $('input[name=required]').val(fieldsArray.join()); 
 
} 
 

 
console.log($('input[name=required]').val()) 
 

 
addToRequiredFields("age") 
 

 
console.log($('input[name=required]').val()) 
 

 
removeFromRequiredFields("name") 
 

 
console.log($('input[name=required]').val()) 
 

 
removeFromRequiredFields("tel") 
 

 
console.log($('input[name=required]').val()) 
 

 
addToRequiredFields("name") 
 

 
console.log($('input[name=required]').val())
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <title>JS Bin</title> 
 
</head> 
 
<body> 
 
<input type="hidden" name="required" value="name,town,tel,email"> 
 
<script src="https://code.jquery.com/jquery-3.1.0.js"></script> 
 

 
</body> 
 
</html>

0

Verwenden Sie die folgenden Login innerhalb yourremove function.removeFromRequiredFields

//var requiredArr = $('input[name=required]').attr('value'); 
 
    var requiredArr = "name,town,tel,email".split(','); 
 
var rmvIndex = requiredArr.indexOf("tel")//"tel" is your string to be removed 
 

 
var newArr = requiredArr.splice(rmvIndex, 1); 
 

 
$('input').attr('value', newArr.join(','))// set value attribute after removing that string

Verwandte Themen