하나의 텍스트 입력으로 내 앱에 다목적 모달 대화 상자가 있습니다. 때로는 텍스트 만 필요하고 때로는 정규식 패턴과 일치하도록 텍스트를 제한하고 싶습니다.
다음과 attr
같이 jQuery로 정규식을 추가해 보았습니다 .
$("#popupTextInput").attr("ng-pattern", "/.*imdb\.com\/title\/.*/");
작동하지 않습니다. 렌더링 된 요소를 검사 할 때 올바른 ng-pattern
지시문이 요소에 나타나지만 formname.$valid
입력 내용에 관계없이 항상 true입니다.
수동으로 속성을 추가하면 (방화범에서 똑같은 모양으로) 예상대로 작동합니다.
패턴이있는 문자열 대신 다음과 같이 속성에 직접 정규식 패턴을 추가해 보았습니다.
var regexp = /.*imdb\.com\/title\/.*/;
$("#popupTextInput").attr("ng-pattern", regexp);
그러나 그것도 작동하지 않습니다.
나는 의아해합니다. 아무도 이것에 대해 밝힐 수 있습니까? 모달을 만들기 전에 속성을 추가한다고 언급해야 할 것 같습니다 .
ETA : 몇 가지 추가 실험을했습니다. 기본적으로 입력에 ng-pattern을 시도하고 필요하지 않을 때 제거했습니다. 비슷한 일이 발생했습니다. ng-pattern을 제거하면 요소에서 제거되지만 (적어도 검사에서는 표시되지 않음) 정규식 패턴은 여전히 유효합니다. 아래 $ scope. $ apply 제안을 시도했지만 ($ apply의 기능 유무에 관계없이) 효과가 없습니다.
$scope.$apply();
jQuery를 사용한 직후 사용해보십시오 .
$scope.$apply( function() {
$("#popupTextInput").attr("ng-pattern", "/.*imdb\.com\/title\/.*/");
});
바인딩이 업데이트되고 문제를 해결할 수 있습니다.
그것에 대해 더 알고 싶다면 $ apply가하는 일에 대한 Stack Overflow 질문 과 $ apply에 대한 Jim Hoskin의 기사를 확인하세요.
이걸 읽고 좋아
나는 그것에 대해 올바른 방법이 될 것이라고 생각합니다.
parent = $("#popupTextInput").parent();
var newInput = $("#popupTextInput").clone();
$("#popupTextInput").remove();
newInput.attr("ng-pattern", "/.*imdb\.com\/title\/.*/");
var compiledElement = $compile(newInput)($scope);
parent.append(compiledElement);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다