2016-10-17 12 views
0

'version'と 'productName'の2つのフィールドを組み合わせてフィールド 'endpoint'を生成しますが、それは空のように思えます。document.getElementById()。value empty

function generateEndpoint() { 
 
    var yourSelect = document.getElementById("version"); 
 
    document.getElementById('endpoint').value = '/' + 
 
    document.getElementById('productName').value + '/' + 
 
    yourSelect.options[yourSelect.selectedIndex].value; 
 

 
}
<div class="form-group" ng-class="{ 'has-error': invalid.productName, 'has-success': valid.productName}"> 
 
    <label for="productName">product name *</label> 
 
    <input type="text" id="productName" name="productName" class="form-control" placeholder="example: myapi_fr_product " ng-model="api.productName" ng-required="true" onkeyup="generateEnpoint()"> 
 
    <span id="helpBlock" class="help-block" ng-show="help.productName.required">product name is required.</span> 
 
</div> 
 

 
<div class="form-group" ng-class="{ 'has-error': invalid.version, 'has-success': valid.version}"> 
 
    <label for="version">version *</label> 
 
    <select name="version" id="version" class="form-control" ng-init="api.version = api.version || ''" ng-model="api.version" ng-required="true" onchange="generateEndpoint()"> 
 
    <option value=""></option> 
 
    <option value="beta">beta</option> 
 
    <option value="v1">v1</option> 
 
    </select> 
 
    <span id="helpBlock" class="help-block" ng-show="help.version.required">version is required.</span> 
 
</div> 
 

 
<div class="form-group" ng-class="{ 'has-error': invalid.endpoint, 'has-success': valid.endpoint}"> 
 
    <label for="endpoint">exposure endpoint base path *</label> 
 
    <input type="text" id="endpoint" name="endpoint" class="form-control" placeholder="example: /myapi/v1" ng-model="api.endpoint" ng-required="true"> 
 
    <span id="helpBlock" class="help-block" ng-show="help.endpoint.required">exposure endpoint is required.</span> 
 
</div>

どのように私は私の問題を解決することができますか?

ありがとうございました。

+0

私は問題を再現できません。選択を変更すると、最初の入力の値が正常に読み取られます。最初の入力を変更すると、全く異なる問題が発生します(エラーメッセージを見ると明らかです)。 – Quentin

+0

ドロップダウンを選択すると、Product Name + Versionの値に?が追加されます。 –

+0

コードは期待通りに機能しますが、Angular.JSを使用する場合は、DOMに直接アクセスしないでください。 AngularJSの選択については、この例を参照してください。 – Jaco

答えて

0

だけonkeyup="generateEndpoint()"

function generateEndpoint() { 
 
    var yourSelect = document.getElementById("version"); 
 
    document.getElementById('endpoint').value = '/' + 
 
    document.getElementById('productName').value + '/' + 
 
    yourSelect.options[yourSelect.selectedIndex].value; 
 

 
}
<div class="form-group" ng-class="{ 'has-error': invalid.productName, 'has-success': valid.productName}"> 
 
    <label for="productName">product name *</label> 
 
    <input type="text" id="productName" name="productName" class="form-control" placeholder="example: myapi_fr_product " ng-model="api.productName" ng-required="true" onkeypress="generateEndpoint()"> 
 
    <span id="helpBlock" class="help-block" ng-show="help.productName.required">product name is required.</span> 
 
</div> 
 

 
<div class="form-group" ng-class="{ 'has-error': invalid.version, 'has-success': valid.version}"> 
 
    <label for="version">version *</label> 
 
    <select name="version" id="version" class="form-control" ng-init="api.version = api.version || ''" ng-model="api.version" ng-required="true" onchange="generateEndpoint()"> 
 
    <option value=""></option> 
 
    <option value="beta">beta</option> 
 
    <option value="v1">v1</option> 
 
    </select> 
 
    <span id="helpBlock" class="help-block" ng-show="help.version.required">version is required.</span> 
 
</div> 
 

 
<div class="form-group" ng-class="{ 'has-error': invalid.endpoint, 'has-success': valid.endpoint}"> 
 
    <label for="endpoint">exposure endpoint base path *</label> 
 
    <input type="text" id="endpoint" name="endpoint" class="form-control" placeholder="example: /myapi/v1" ng-model="api.endpoint" ng-required="true"> 
 
    <span id="helpBlock" class="help-block" ng-show="help.endpoint.required">exposure endpoint is required.</span> 
 
</div>

onkeypress="generateEndpoint()"によってANGULARJS方法

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.api = {}; 
 
    $scope.update = function() { 
 
    $scope.api.endpoint = $scope.api.productName + "/" + $scope.api.version; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
    <div class="form-group" ng-class="{ 'has-error': invalid.productName, 'has-success': valid.productName}"> 
 
    <label for="productName">product name *</label> 
 
    <input type="text" id="productName" name="productName" class="form-control" placeholder="example: myapi_fr_product " ng-model="api.productName" ng-required="true" ng-change="update()"> 
 
    <span id="helpBlock" class="help-block" ng-show="help.productName.required">product name is required.</span> 
 
    </div> 
 

 
    <div class="form-group" ng-class="{ 'has-error': invalid.version, 'has-success': valid.version}"> 
 
    <label for="version">version *</label> 
 
    <select name="version" id="version" class="form-control" ng-init="api.version = api.version || ''" ng-model="api.version" ng-required="true" ng-change="update()" ;> 
 
     <option value=""></option> 
 
     <option value="beta">beta</option> 
 
     <option value="v1">v1</option> 
 
    </select> 
 
    <span id="helpBlock" class="help-block" ng-show="help.version.required">version is required.</span> 
 
    </div> 
 

 
    <div class="form-group" ng-class="{ 'has-error': invalid.endpoint, 'has-success': valid.endpoint}"> 
 
    <label for="endpoint">exposure endpoint base path *</label> 
 
    <input type="text" id="endpoint" name="endpoint" class="form-control" placeholder="example: /myapi/v1" ng-model="api.endpoint" ng-required="true"> 
 
    <span id="helpBlock" class="help-block" ng-show="help.endpoint.required">exposure endpoint is required.</span> 
 
    </div> 
 
</div>

を置き換えます3210
+0

変更なし..情報については、私は角度をつけています – Bourg

+0

このコードは動作しています...あなたは+ではなく、私はちょうどJSを使って質問のアイデアに従っています。私はangularJSの方法 – Weedoze

+0

Thanksa lotで更新します。素敵な一日を持ちなさい – Bourg

0

また、AngularJSを使用しており、既にng-modelが定義されています。その場合は、document.getElementById().value

function generateEndpoint() { 
    $scope.api.endpoint = $scope.api.productName + $scope.api.version; 

} 
+0

そして私はngモデルの私の入力「端点」でこの機能を呼んでいますか? – Bourg

関連する問題